From 4cb2859e93885dad7ede4c025d35ebdab779bfe7 Mon Sep 17 00:00:00 2001 From: Chris Li Date: Sun, 9 May 2021 14:34:46 -0700 Subject: [PATCH] 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 --- core/java/android/service/wallpaper/WallpaperService.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index 53bde36a8a646..324d1abf24bbb 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.MSCALE_Y; 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 @@ public abstract class WallpaperService extends Service { 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);