diff options
| -rw-r--r-- | api/current.txt | 1 | ||||
| -rw-r--r-- | api/system-current.txt | 1 | ||||
| -rw-r--r-- | api/test-current.txt | 1 | ||||
| -rw-r--r-- | core/java/android/app/WallpaperManager.java | 19 | ||||
| -rw-r--r-- | services/core/java/com/android/server/wallpaper/WallpaperManagerService.java | 8 |
5 files changed, 30 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt index aeaae5583304..8624cf6b68e0 100644 --- a/api/current.txt +++ b/api/current.txt @@ -5711,6 +5711,7 @@ package android.app { public class WallpaperManager { method public void clear() throws java.io.IOException; + method public void clear(int) throws java.io.IOException; method public void clearWallpaperOffsets(android.os.IBinder); method public void forgetLoadedWallpaper(); method public android.graphics.drawable.Drawable getBuiltInDrawable(); diff --git a/api/system-current.txt b/api/system-current.txt index 1a2c8547fa8c..505b1fbb5343 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5843,6 +5843,7 @@ package android.app { public class WallpaperManager { method public void clear() throws java.io.IOException; + method public void clear(int) throws java.io.IOException; method public void clearWallpaper(); method public void clearWallpaper(int, int); method public void clearWallpaperOffsets(android.os.IBinder); diff --git a/api/test-current.txt b/api/test-current.txt index 1039fed4ac4f..3c54b348ed3e 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -5715,6 +5715,7 @@ package android.app { public class WallpaperManager { method public void clear() throws java.io.IOException; + method public void clear(int) throws java.io.IOException; method public void clearWallpaperOffsets(android.os.IBinder); method public void forgetLoadedWallpaper(); method public android.graphics.drawable.Drawable getBuiltInDrawable(); diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index 4d8d96b0e16c..6bc03f7da77b 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -1433,6 +1433,25 @@ public class WallpaperManager { } /** + * Remove one or more currently set wallpapers, reverting to the system default + * display for each one. If {@link #FLAG_SET_SYSTEM} is set in the {@code which} + * parameter, the intent {@link Intent#ACTION_WALLPAPER_CHANGED} will be broadcast + * upon success. + * + * @param which A bitwise combination of {@link #FLAG_SET_SYSTEM} or + * {@link #FLAG_SET_LOCK} + * @throws IOException If an error occurs reverting to the built-in wallpaper. + */ + public void clear(int which) throws IOException { + if ((which & FLAG_SET_SYSTEM) != 0) { + clear(); + } + if ((which & FLAG_SET_LOCK) != 0) { + clearWallpaper(FLAG_SET_LOCK, mContext.getUserId()); + } + } + + /** * Open stream representing the default static image wallpaper. * * @hide diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index ba0d34061e9e..a0a971af0030 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -882,6 +882,9 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { wallpaper = mLockWallpaperMap.get(userId); if (wallpaper == null) { // It's already gone; we're done. + if (DEBUG) { + Slog.i(TAG, "Lock wallpaper already cleared"); + } return; } } else { @@ -902,14 +905,19 @@ public class WallpaperManagerService extends IWallpaperManager.Stub { wallpaper.wallpaperFile.delete(); wallpaper.cropFile.delete(); if (which == FLAG_SET_LOCK) { + mLockWallpaperMap.remove(userId); final IWallpaperManagerCallback cb = mKeyguardListener; if (cb != null) { + if (DEBUG) { + Slog.i(TAG, "Notifying keyguard of lock wallpaper clear"); + } try { cb.onWallpaperChanged(); } catch (RemoteException e) { // Oh well it went away; no big deal } } + saveSettingsLocked(userId); return; } } |