Support single-user ImageWallpaper service

Bug: 206118673
Test: Manually check image wallpaper works for multi-user
Change-Id: Ic56fe799b2c6891f52db7a79348fdac4e0ef208b
This commit is contained in:
Peter Kalauskas
2021-12-01 18:43:42 -08:00
parent b117df1dbf
commit 91ebd74d39
4 changed files with 17 additions and 1 deletions

View File

@@ -609,6 +609,18 @@ public abstract class WallpaperService extends Service {
}
}
/** @hide */
public void setShowForAllUsers(boolean show) {
mWindowPrivateFlags = show
? (mWindowPrivateFlags
| WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS)
: (mWindowPrivateFlags
& ~WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS);
if (mCreated) {
updateSurface(false, false, false);
}
}
/** {@hide} */
@UnsupportedAppUsage
public void setFixedSizeAllowed(boolean allowed) {

View File

@@ -375,6 +375,7 @@
</receiver>
<service android:name=".ImageWallpaper"
android:singleUser="true"
android:permission="android.permission.BIND_WALLPAPER"
android:exported="true" />

View File

@@ -126,6 +126,7 @@ public class ImageWallpaper extends WallpaperService {
mRenderer = getRendererInstance();
setFixedSizeAllowed(true);
updateSurfaceSize();
setShowForAllUsers(true);
mRenderer.setOnBitmapChanged(b -> {
mLocalColorsToAdd.addAll(mColorAreas);

View File

@@ -25,6 +25,7 @@ import android.app.WallpaperManager;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.os.UserHandle;
import android.util.Log;
import android.util.Size;
@@ -142,7 +143,8 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer {
mRefCount.incrementAndGet();
synchronized (mRefCount) {
if (mBitmap == null) {
mBitmap = mWallpaperManager.getBitmap(false /* hardware */);
mBitmap = mWallpaperManager.getBitmapAsUser(UserHandle.USER_CURRENT,
false /* hardware */);
mWcgContent = mWallpaperManager.wallpaperSupportsWcg(
WallpaperManager.FLAG_SYSTEM);
mWallpaperManager.forgetLoadedWallpaper();