Fix non-visual Context in ImageWallpaper
Before, it tried to access WindowManager from a non-visual context. Now,
it should use a window context.
Bug: 187644235
Test: manual
Change-Id: I3994d7b86fd28598d375c1c8033d72bbc9a9fdcf
diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java
index 53bde36..324d1ab 100644
--- a/core/java/android/service/wallpaper/WallpaperService.java
+++ b/core/java/android/service/wallpaper/WallpaperService.java
@@ -21,6 +21,7 @@
import static android.graphics.Matrix.MSKEW_X;
import static android.graphics.Matrix.MSKEW_Y;
import static android.view.View.SYSTEM_UI_FLAG_VISIBLE;
+import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
import android.annotation.FloatRange;
import android.annotation.NonNull;
@@ -1218,7 +1219,9 @@
mIWallpaperEngine.mDisplayManager.registerDisplayListener(mDisplayListener,
mCaller.getHandler());
mDisplay = mIWallpaperEngine.mDisplay;
- mDisplayContext = createDisplayContext(mDisplay);
+ // Use window context of TYPE_WALLPAPER so client can access UI resources correctly.
+ mDisplayContext = createDisplayContext(mDisplay)
+ .createWindowContext(TYPE_WALLPAPER, null /* options */);
mDisplayState = mDisplay.getState();
if (DEBUG) Log.v(TAG, "onCreate(): " + this);