Change retail mode wallpaper (1/2)

Change-Id: I7ce5711e57bc39edf10fc7151f26168c6183d71e
Fixes: 30830249
This commit is contained in:
Jorim Jaggi
2016-08-18 10:44:54 -07:00
parent e5036b3cab
commit 6c902d0453
3 changed files with 22 additions and 7 deletions

View File

@@ -44,7 +44,7 @@ interface IWallpaperManager {
*/
ParcelFileDescriptor setWallpaper(String name, in String callingPackage,
in Rect cropHint, boolean allowBackup, out Bundle extras, int which,
IWallpaperManagerCallback completion);
IWallpaperManagerCallback completion, int userId);
/**
* Set the live wallpaper. This only affects the system wallpaper.

View File

@@ -48,6 +48,7 @@ import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.ParcelFileDescriptor;
import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemProperties;
@@ -939,7 +940,8 @@ public class WallpaperManager {
/* Set the wallpaper to the default values */
ParcelFileDescriptor fd = sGlobals.mService.setWallpaper(
"res:" + resources.getResourceName(resid),
mContext.getOpPackageName(), null, false, result, which, completion);
mContext.getOpPackageName(), null, false, result, which, completion,
UserHandle.myUserId());
if (fd != null) {
FileOutputStream fos = null;
boolean ok = false;
@@ -1040,6 +1042,19 @@ public class WallpaperManager {
public int setBitmap(Bitmap fullImage, Rect visibleCropHint,
boolean allowBackup, @SetWallpaperFlags int which)
throws IOException {
return setBitmap(fullImage, visibleCropHint, allowBackup, which,
UserHandle.myUserId());
}
/**
* Like {@link #setBitmap(Bitmap, Rect, boolean, int)}, but allows to pass in an explicit user
* id. If the user id doesn't match the user id the process is running under, calling this
* requires permission {@link android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}.
* @hide
*/
public int setBitmap(Bitmap fullImage, Rect visibleCropHint,
boolean allowBackup, @SetWallpaperFlags int which, int userId)
throws IOException {
validateRect(visibleCropHint);
if (sGlobals.mService == null) {
Log.w(TAG, "WallpaperService not running");
@@ -1050,7 +1065,7 @@ public class WallpaperManager {
try {
ParcelFileDescriptor fd = sGlobals.mService.setWallpaper(null,
mContext.getOpPackageName(), visibleCropHint, allowBackup,
result, which, completion);
result, which, completion, userId);
if (fd != null) {
FileOutputStream fos = null;
try {
@@ -1176,7 +1191,7 @@ public class WallpaperManager {
try {
ParcelFileDescriptor fd = sGlobals.mService.setWallpaper(null,
mContext.getOpPackageName(), visibleCropHint, allowBackup,
result, which, completion);
result, which, completion, UserHandle.myUserId());
if (fd != null) {
FileOutputStream fos = null;
try {

View File

@@ -1350,7 +1350,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
@Override
public ParcelFileDescriptor setWallpaper(String name, String callingPackage,
Rect cropHint, boolean allowBackup, Bundle extras, int which,
IWallpaperManagerCallback completion) {
IWallpaperManagerCallback completion, int userId) {
userId = ActivityManager.handleIncomingUser(getCallingPid(), getCallingUid(), userId,
false /* all */, true /* full */, "changing wallpaper", null /* pkg */);
checkPermission(android.Manifest.permission.SET_WALLPAPER);
if ((which & (FLAG_LOCK|FLAG_SYSTEM)) == 0) {
@@ -1374,8 +1376,6 @@ public class WallpaperManagerService extends IWallpaperManager.Stub {
}
}
final int userId = UserHandle.getCallingUserId();
synchronized (mLock) {
if (DEBUG) Slog.v(TAG, "setWallpaper which=0x" + Integer.toHexString(which));
WallpaperData wallpaper;