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);