WallpaperManager
  public
  
  
  
  class
  WallpaperManager
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.app.WallpaperManager | 
Provides access to the system wallpaper. With WallpaperManager, you can get the current wallpaper, get the desired dimensions for the wallpaper, set the wallpaper, and more.
 An app can check whether wallpapers are supported for the current user, by calling
 isWallpaperSupported(), and whether setting of wallpapers is allowed, by calling
 isSetWallpaperAllowed().
 Any public APIs added to WallpaperManager should have a corresponding stub in
 ERROR(DisabledWallpaperManager/android.app.DisabledWallpaperManager DisabledWallpaperManager).
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        interface | WallpaperManager.OnColorsChangedListenerInterface definition for a callback to be invoked when colors change on a wallpaper. | 
| Constants | |
|---|---|
| String | ACTION_CHANGE_LIVE_WALLPAPERDirectly launch live wallpaper preview, allowing the user to immediately confirm to switch to a specific live wallpaper. | 
| String | ACTION_CROP_AND_SET_WALLPAPERActivity Action: Show settings for choosing wallpaper. | 
| String | ACTION_LIVE_WALLPAPER_CHOOSERLaunch an activity for the user to pick the current global live wallpaper. | 
| String | COMMAND_DROPCommand for  | 
| String | COMMAND_SECONDARY_TAPCommand for  | 
| String | COMMAND_TAPCommand for  | 
| String | EXTRA_LIVE_WALLPAPER_COMPONENTExtra in  | 
| int | FLAG_LOCKFlag: set or retrieve the lock-screen-specific wallpaper. | 
| int | FLAG_SYSTEMFlag: set or retrieve the general system wallpaper. | 
| String | WALLPAPER_PREVIEW_META_DATAManifest entry for activities that respond to  | 
| Public methods | |
|---|---|
| 
        
        
        
        
        
        void | 
      addOnColorsChangedListener(WallpaperManager.OnColorsChangedListener listener, Handler handler)
      Registers a listener to get notified when the wallpaper colors change. | 
| 
        
        
        
        
        
        void | 
      clear(int which)
      Remove one or more currently set wallpapers, reverting to the system default display for each one. | 
| 
        
        
        
        
        
        void | 
      clear()
      Remove any currently set system wallpaper, reverting to the system's built-in wallpaper. | 
| 
        
        
        
        
        
        void | 
      clearWallpaper()
      Equivalent to  | 
| 
        
        
        
        
        
        void | 
      clearWallpaperOffsets(IBinder windowToken)
      Clear the offsets previously associated with this window through
  | 
| 
        
        
        
        
        
        void | 
      forgetLoadedWallpaper()
      Remove all internal references to the last loaded wallpaper. | 
| 
        
        
        
        
        
        Drawable | 
      getBuiltInDrawable(int outWidth, int outHeight, boolean scaleToFit, float horizontalAlignment, float verticalAlignment, int which)
      Returns a drawable for the built-in static wallpaper of the specified type. | 
| 
        
        
        
        
        
        Drawable | 
      getBuiltInDrawable(int which)
      Obtain a drawable for the specified built-in static system wallpaper. | 
| 
        
        
        
        
        
        Drawable | 
      getBuiltInDrawable(int outWidth, int outHeight, boolean scaleToFit, float horizontalAlignment, float verticalAlignment)
      Returns a drawable for the system built-in static wallpaper. | 
| 
        
        
        
        
        
        Drawable | 
      getBuiltInDrawable()
      Obtain a drawable for the built-in static system wallpaper. | 
| 
        
        
        
        
        
        Intent | 
      getCropAndSetWallpaperIntent(Uri imageUri)
      Gets an Intent that will launch an activity that crops the given image and sets the device's wallpaper. | 
| 
        
        
        
        
        
        int | 
      getDesiredMinimumHeight()
      Returns the desired minimum height for the wallpaper. | 
| 
        
        
        
        
        
        int | 
      getDesiredMinimumWidth()
      Returns the desired minimum width for the wallpaper. | 
| 
        
        
        
        
        
        Drawable | 
      getDrawable()
      Important note: 
 | 
| 
        
        
        
        
        
        Drawable | 
      getDrawable(int which)
       Important note:  only apps with
  | 
| 
        
        
        
        
        
        Drawable | 
      getFastDrawable(int which)
       Important note:  only apps with
  | 
| 
        
        
        
        
        
        Drawable | 
      getFastDrawable()
      Important note: 
 | 
| 
        
        
        static
        
        
        WallpaperManager | 
      getInstance(Context context)
      Retrieve a WallpaperManager associated with the given Context. | 
| 
        
        
        
        
        
        WallpaperColors | 
      getWallpaperColors(int which)
      Get the primary colors of a wallpaper. | 
| 
        
        
        
        
        
        ParcelFileDescriptor | 
      getWallpaperFile(int which)
      Important note: 
 | 
| 
        
        
        
        
        
        int | 
      getWallpaperId(int which)
      Get the ID of the current wallpaper of the given kind. | 
| 
        
        
        
        
        
        WallpaperInfo | 
      getWallpaperInfo(int which)
      Returns the information about the designated wallpaper if its current wallpaper is a live wallpaper component. | 
| 
        
        
        
        
        
        WallpaperInfo | 
      getWallpaperInfo()
      Returns the information about the home screen wallpaper if its current wallpaper is a live wallpaper component. | 
| 
        
        
        
        
        
        boolean | 
      hasResourceWallpaper(int resid)
      Return whether any users are currently set to use the wallpaper with the given resource ID. | 
| 
        
        
        
        
        
        boolean | 
      isSetWallpaperAllowed()
      Returns whether the calling package is allowed to set the wallpaper for the calling user. | 
| 
        
        
        
        
        
        boolean | 
      isWallpaperSupported()
      Returns whether wallpapers are supported for the calling user. | 
| 
        
        
        
        
        
        Drawable | 
      peekDrawable()
      Important note: 
 | 
| 
        
        
        
        
        
        Drawable | 
      peekDrawable(int which)
       Important note:  only apps with
  | 
| 
        
        
        
        
        
        Drawable | 
      peekFastDrawable()
       Important note:  only apps with
  | 
| 
        
        
        
        
        
        Drawable | 
      peekFastDrawable(int which)
       Important note:  only apps with
  | 
| 
        
        
        
        
        
        void | 
      removeOnColorsChangedListener(WallpaperManager.OnColorsChangedListener callback)
      Stop listening to color updates. | 
| 
        
        
        
        
        
        void | 
      sendWallpaperCommand(IBinder windowToken, String action, int x, int y, int z, Bundle extras)
      Send an arbitrary command to the current active wallpaper. | 
| 
        
        
        
        
        
        int | 
      setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which)
      Version of  | 
| 
        
        
        
        
        
        void | 
      setBitmap(Bitmap bitmap)
      Change the current system wallpaper to a bitmap. | 
| 
        
        
        
        
        
        int | 
      setBitmap(Bitmap fullImage, Rect visibleCropHint, boolean allowBackup)
      Change the current system wallpaper to a bitmap, specifying a hint about which subrectangle of the full image is to be visible. | 
| 
        
        
        
        
        
        void | 
      setDisplayPadding(Rect padding)
      Specify extra padding that the wallpaper should have outside of the display. | 
| 
        
        
        
        
        
        int | 
      setResource(int resid, int which)
      Version of  | 
| 
        
        
        
        
        
        void | 
      setResource(int resid)
      Change the current system wallpaper to the bitmap in the given resource. | 
| 
        
        
        
        
        
        void | 
      setStream(InputStream bitmapData)
      Change the current system wallpaper to a specific byte stream. | 
| 
        
        
        
        
        
        int | 
      setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup, int which)
      Version of  | 
| 
        
        
        
        
        
        int | 
      setStream(InputStream bitmapData, Rect visibleCropHint, boolean allowBackup)
      Change the current system wallpaper to a specific byte stream, specifying a hint about which subrectangle of the full image is to be visible. | 
| 
        
        
        
        
        
        void | 
      setWallpaperOffsetSteps(float xStep, float yStep)
      For applications that use multiple virtual screens showing a wallpaper, specify the step size between virtual screens. | 
| 
        
        
        
        
        
        void | 
      setWallpaperOffsets(IBinder windowToken, float xOffset, float yOffset)
      Set the display position of the current wallpaper within any larger space, when that wallpaper is visible behind the given window. | 
| 
        
        
        
        
        
        void | 
      suggestDesiredDimensions(int minimumWidth, int minimumHeight)
      For use only by the current home application, to specify the size of wallpaper it would like to use. | 
| Inherited methods | |
|---|---|
Constants
ACTION_CHANGE_LIVE_WALLPAPER
public static final String ACTION_CHANGE_LIVE_WALLPAPER
Directly launch live wallpaper preview, allowing the user to immediately
 confirm to switch to a specific live wallpaper.  You must specify
 EXTRA_LIVE_WALLPAPER_COMPONENT with the ComponentName of
 a live wallpaper component that is to be shown.
Constant Value: "android.service.wallpaper.CHANGE_LIVE_WALLPAPER"
ACTION_CROP_AND_SET_WALLPAPER
public static final String ACTION_CROP_AND_SET_WALLPAPER
Activity Action: Show settings for choosing wallpaper. Do not use directly to construct
 an intent; instead, use getCropAndSetWallpaperIntent(Uri).
 
Input:  Intent.getData is the URI of the image to crop and set as wallpaper.
 
Output: RESULT_OK if user decided to crop/set the wallpaper, RESULT_CANCEL otherwise Activities that support this intent should specify a MIME filter of "image/*"
Constant Value: "android.service.wallpaper.CROP_AND_SET_WALLPAPER"
ACTION_LIVE_WALLPAPER_CHOOSER
public static final String ACTION_LIVE_WALLPAPER_CHOOSER
Launch an activity for the user to pick the current global live wallpaper.
Constant Value: "android.service.wallpaper.LIVE_WALLPAPER_CHOOSER"
COMMAND_DROP
public static final String COMMAND_DROP
Command for sendWallpaperCommand(IBinder, String, int, int, int, Bundle): reported by the wallpaper
 host when the user drops an object into an area of the host.  The x
 and y arguments are the location of the drop.
Constant Value: "android.home.drop"
COMMAND_SECONDARY_TAP
public static final String COMMAND_SECONDARY_TAP
Command for sendWallpaperCommand(IBinder, String, int, int, int, Bundle): reported by the wallpaper
 host when the user releases a secondary pointer on an empty area
 (not performing an action in the host).  The x and y arguments are
 the location of the secondary tap in screen coordinates.
Constant Value: "android.wallpaper.secondaryTap"
COMMAND_TAP
public static final String COMMAND_TAP
Command for sendWallpaperCommand(IBinder, String, int, int, int, Bundle): reported by the wallpaper
 host when the user taps on an empty area (not performing an action
 in the host).  The x and y arguments are the location of the tap in
 screen coordinates.
Constant Value: "android.wallpaper.tap"
EXTRA_LIVE_WALLPAPER_COMPONENT
public static final String EXTRA_LIVE_WALLPAPER_COMPONENT
Extra in ACTION_CHANGE_LIVE_WALLPAPER that specifies the
 ComponentName of a live wallpaper that should be shown as a preview,
 for the user to confirm.
Constant Value: "android.service.wallpaper.extra.LIVE_WALLPAPER_COMPONENT"
FLAG_LOCK
public static final int FLAG_LOCK
Flag: set or retrieve the lock-screen-specific wallpaper.
Constant Value: 2 (0x00000002)
FLAG_SYSTEM
public static final int FLAG_SYSTEM
Flag: set or retrieve the general system wallpaper.
Constant Value: 1 (0x00000001)
WALLPAPER_PREVIEW_META_DATA
public static final String WALLPAPER_PREVIEW_META_DATA
Manifest entry for activities that respond to Intent.ACTION_SET_WALLPAPER
 which allows them to provide a custom large icon associated with this action.
Constant Value: "android.wallpaper.preview"
Public methods
addOnColorsChangedListener
public void addOnColorsChangedListener (WallpaperManager.OnColorsChangedListener listener, Handler handler)
Registers a listener to get notified when the wallpaper colors change.
| Parameters | |
|---|---|
| listener | WallpaperManager.OnColorsChangedListener: A listener to register
 This value cannot benull. | 
| handler | Handler: Where to call it from. Will be called from the main thread
                if null. | 
clear
public void clear (int which)
Remove one or more currently set wallpapers, reverting to the system default
 display for each one. On success, the intent Intent.ACTION_WALLPAPER_CHANGED
 is broadcast.
 
-  When called with which=FLAG_LOCK, clear the lockscreen wallpaper. The home screen wallpaper will become visible on the lock screen.
-  When called with which=FLAG_SYSTEM, revert the home screen wallpaper to default. The lockscreen wallpaper will be unchanged: if the previous wallpaper was shared between home and lock screen, it will become lock screen only.
-  When called with which=(FLAG_LOCK|FLAG_SYSTEM), put the default wallpaper on both home and lock screen, removing any user defined wallpaper.
Requires
Manifest.permission.SET_WALLPAPER
    | Parameters | |
|---|---|
| which | int: A bitwise combination ofFLAG_SYSTEMorFLAG_LOCKValue is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Throws | |
|---|---|
| IOException | If an error occurs reverting to the built-in wallpaper. | 
clear
public void clear ()
Remove any currently set system wallpaper, reverting to the system's built-in
 wallpaper.
 On success, the intent Intent.ACTION_WALLPAPER_CHANGED is broadcast.
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER.
 
 Requires Manifest.permission.SET_WALLPAPER
| Throws | |
|---|---|
| IOException | If an error occurs reverting to the built-in wallpaper. | 
clearWallpaper
public void clearWallpaper ()
Equivalent to clear().
 
 Requires Manifest.permission.SET_WALLPAPER
See also:
clearWallpaperOffsets
public void clearWallpaperOffsets (IBinder windowToken)
Clear the offsets previously associated with this window through
 setWallpaperOffsets(android.os.IBinder, float, float).  This reverts
 the window to its default state, where it does not cause the wallpaper
 to scroll from whatever its last offsets were.
| Parameters | |
|---|---|
| windowToken | IBinder: The window who these offsets should be associated
 with, as returned byView.getWindowToken(). | 
forgetLoadedWallpaper
public void forgetLoadedWallpaper ()
Remove all internal references to the last loaded wallpaper. Useful for apps that want to reduce memory usage when they only temporarily need to have the wallpaper. After calling, the next request for the wallpaper will require reloading it again from disk.
getBuiltInDrawable
public Drawable getBuiltInDrawable (int outWidth, int outHeight, boolean scaleToFit, float horizontalAlignment, float verticalAlignment, int which)
Returns a drawable for the built-in static wallpaper of the specified type. Based on the parameters, the drawable can be cropped and scaled.
| Parameters | |
|---|---|
| outWidth | int: The width of the returned drawable | 
| outHeight | int | 
| scaleToFit | boolean: If true, scale the wallpaper down rather than just cropping it | 
| horizontalAlignment | float: A float value between 0 and 1 specifying where to crop the image;
        0 for left-aligned, 0.5 for horizontal center-aligned, and 1 for right-aligned | 
| verticalAlignment | float: A float value between 0 and 1 specifying where to crop the image;
        0 for top-aligned, 0.5 for vertical center-aligned, and 1 for bottom-aligned | 
| which | int: TheFLAG_*identifier of a valid wallpaper type.  Throws
     IllegalArgumentException if an invalid wallpaper is requested.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| Drawable | A Drawable presenting the built-in default wallpaper image of the given type,
        or nullif no default image of that type is defined on this device. | 
getBuiltInDrawable
public Drawable getBuiltInDrawable (int which)
Obtain a drawable for the specified built-in static system wallpaper.
| Parameters | |
|---|---|
| which | int: TheFLAG_*identifier of a valid wallpaper type.  Throws
     IllegalArgumentException if an invalid wallpaper is requested.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| Drawable | A Drawable presenting the specified wallpaper image, or nullif no built-in default image for that wallpaper type exists. | 
getBuiltInDrawable
public Drawable getBuiltInDrawable (int outWidth, int outHeight, boolean scaleToFit, float horizontalAlignment, float verticalAlignment)
Returns a drawable for the system built-in static wallpaper. Based on the parameters, the drawable can be cropped and scaled
| Parameters | |
|---|---|
| outWidth | int: The width of the returned drawable | 
| outHeight | int | 
| scaleToFit | boolean: If true, scale the wallpaper down rather than just cropping it | 
| horizontalAlignment | float: A float value between 0 and 1 specifying where to crop the image;
        0 for left-aligned, 0.5 for horizontal center-aligned, and 1 for right-aligned | 
| verticalAlignment | float: A float value between 0 and 1 specifying where to crop the image;
        0 for top-aligned, 0.5 for vertical center-aligned, and 1 for bottom-aligned | 
| Returns | |
|---|---|
| Drawable | A Drawable presenting the built-in default system wallpaper image,
        or nullif no such default image is defined on this device. | 
getBuiltInDrawable
public Drawable getBuiltInDrawable ()
Obtain a drawable for the built-in static system wallpaper.
| Returns | |
|---|---|
| Drawable | |
getCropAndSetWallpaperIntent
public Intent getCropAndSetWallpaperIntent (Uri imageUri)
Gets an Intent that will launch an activity that crops the given
 image and sets the device's wallpaper. If there is a default HOME activity
 that supports cropping wallpapers, it will be preferred as the default.
 Use this method instead of directly creating a ACTION_CROP_AND_SET_WALLPAPER
 intent.
| Parameters | |
|---|---|
| imageUri | Uri: The image URI that will be set in the intent. The must be a content
                 URI and its provider must resolve its type to "image/*" | 
| Returns | |
|---|---|
| Intent | |
| Throws | |
|---|---|
| IllegalArgumentException | if the URI is not a content URI or its MIME type is not "image/*" | 
getDesiredMinimumHeight
public int getDesiredMinimumHeight ()
Returns the desired minimum height for the wallpaper. Callers of
 setBitmap(android.graphics.Bitmap) or
 setStream(java.io.InputStream) should check this value
 beforehand to make sure the supplied wallpaper respects the desired
 minimum height.
 If the returned value is <= 0, the caller should use the height of
 the default display instead.
| Returns | |
|---|---|
| int | The desired minimum height for the wallpaper. This value should be honored by applications that set the wallpaper but it is not mandatory. | 
See also:
getDesiredMinimumWidth
public int getDesiredMinimumWidth ()
Returns the desired minimum width for the wallpaper. Callers of
 setBitmap(android.graphics.Bitmap) or
 setStream(java.io.InputStream) should check this value
 beforehand to make sure the supplied wallpaper respects the desired
 minimum width.
 If the returned value is <= 0, the caller should use the width of
 the default display instead.
| Returns | |
|---|---|
| int | The desired minimum width for the wallpaper. This value should be honored by applications that set the wallpaper but it is not mandatory. | 
See also:
getDrawable
public Drawable getDrawable ()
Important note:
- Up to Android 12, this method requires the
     Manifest.permission.READ_EXTERNAL_STORAGEpermission.
- Starting in Android 13, directly accessing the wallpaper is not possible anymore,
     instead the default system wallpaper is returned
     (some versions of Android 13 may throw a SecurityException).
- From Android 14, this method should not be used
     and will always throw a SecurityException.
-  Apps with Manifest.permission.MANAGE_EXTERNAL_STORAGEcan still access the real wallpaper on all versions.
 Equivalent to getDrawable(int) with which=FLAG_SYSTEM.
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Returns | |
|---|---|
| Drawable | A Drawable object for the requested wallpaper.
 This value may be null. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
See also:
getDrawable
public Drawable getDrawable (int which)
 Important note:  only apps with
 Manifest.permission.MANAGE_EXTERNAL_STORAGE should use this method.
 Otherwise, a SecurityException will be thrown.
 
 Retrieve the requested wallpaper for the specified wallpaper type if the wallpaper is not
 a live wallpaper. This method should not be used to display the user wallpaper on an app:
 WindowManager.LayoutParams.FLAG_SHOW_WALLPAPER should be used instead.
 
 When called with which=FLAG_SYSTEM,
 if there is a live wallpaper on home screen, the built-in default wallpaper is returned.
 
 When called with which=FLAG_LOCK, if there is a live wallpaper
 on lock screen, or if the lock screen and home screen share the same wallpaper engine,
 null is returned.
 
 getWallpaperInfo(int) can be used to determine whether there is a live wallpaper
 on a specified screen type.
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Parameters | |
|---|---|
| which | int: TheFLAG_*identifier of a valid wallpaper type. Throws
     IllegalArgumentException if an invalid wallpaper is requested.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| Drawable | A Drawable object for the requested wallpaper. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
getFastDrawable
public Drawable getFastDrawable (int which)
 Important note:  only apps with
 Manifest.permission.MANAGE_EXTERNAL_STORAGE should use this method.
 Otherwise, a SecurityException will be thrown.
 Like getDrawable(int), but the returned Drawable has a number
 of limitations to reduce its overhead as much as possible. It will
 never scale the wallpaper (only centering it if the requested bounds
 do match the bitmap bounds, which should not be typical), doesn't
 allow setting an alpha, color filter, or other attributes, etc.  The
 bounds of the returned drawable will be initialized to the same bounds
 as the wallpaper, so normally you will not need to touch it.  The
 drawable also assumes that it will be used in a context running in
 the same density as the screen (not in density compatibility mode).
 
 Requires Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
| Parameters | |
|---|---|
| which | int: TheFLAG_*identifier of a valid wallpaper type.  Throws
     IllegalArgumentException if an invalid wallpaper is requested.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| Drawable | An optimized Drawable object for the requested wallpaper, or nullin some cases as specified ingetDrawable(int). | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
getFastDrawable
public Drawable getFastDrawable ()
Important note:
- Up to Android 12, this method requires the
     Manifest.permission.READ_EXTERNAL_STORAGEpermission.
- Starting in Android 13, directly accessing the wallpaper is not possible anymore,
     instead the default wallpaper is returned
     (some versions of Android 13 may throw a SecurityException).
- From Android 14, this method should not be used
     and will always throw a SecurityException.
-  Apps with Manifest.permission.MANAGE_EXTERNAL_STORAGEcan still access the real wallpaper on all versions.
 Equivalent to getFastDrawable(int) with which=FLAG_SYSTEM.
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Returns | |
|---|---|
| Drawable | A Drawable object for the requested wallpaper.
 This value may be null. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
See also:
getInstance
public static WallpaperManager getInstance (Context context)
Retrieve a WallpaperManager associated with the given Context.
| Parameters | |
|---|---|
| context | Context | 
| Returns | |
|---|---|
| WallpaperManager | |
getWallpaperColors
public WallpaperColors getWallpaperColors (int which)
Get the primary colors of a wallpaper.
This method can return null when:
 
- Colors are still being processed by the system.
- The user has chosen to use a live wallpaper:  live wallpapers might not
 implement
 WallpaperService.Engine#onComputeColors().
Please note that this API will go through IPC and may take some time to calculate the wallpaper color, which could block the caller thread, so it is not recommended to call this in the UI thread.
| Parameters | |
|---|---|
| which | int: Wallpaper type. Must be eitherFLAG_SYSTEMorFLAG_LOCK. | 
| Returns | |
|---|---|
| WallpaperColors | Current WallpaperColorsor null if colors are unknown. | 
getWallpaperFile
public ParcelFileDescriptor getWallpaperFile (int which)
Important note:
- Up to Android 12, this method requires the
     Manifest.permission.READ_EXTERNAL_STORAGEpermission.
- Starting in Android 13, directly accessing the wallpaper is not possible anymore,
     instead the default system wallpaper is returned
     (some versions of Android 13 may throw a SecurityException).
- From Android 14, this method should not be used
     and will always throw a SecurityException.
-  Apps with Manifest.permission.MANAGE_EXTERNAL_STORAGEcan still access the real wallpaper on all versions.
Get an open, readable file descriptor to the given wallpaper image file. The caller is responsible for closing the file descriptor when done ingesting the file.
If no lock-specific wallpaper has been configured for the given user, then
 this method will return null when requesting FLAG_LOCK rather than
 returning the system wallpaper's image file.
 
 Requires Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
| Parameters | |
|---|---|
| which | int: The wallpaper whose image file is to be retrieved.  Must be a single
     defined kind of wallpaper, eitherFLAG_SYSTEMorFLAG_LOCK.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| ParcelFileDescriptor | An open, readable file descriptor to the requested wallpaper image file;
     or nullif no such wallpaper is configured or if the calling app does
     not have permission to read the current wallpaper. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
See also:
getWallpaperId
public int getWallpaperId (int which)
Get the ID of the current wallpaper of the given kind. If there is no such wallpaper configured, returns a negative number.
Every time the wallpaper image is set, a new ID is assigned to it. This method allows the caller to determine whether the wallpaper imagery has changed, regardless of how that change happened.
| Parameters | |
|---|---|
| which | int: The wallpaper whose ID is to be returned.  Must be a single
     defined kind of wallpaper, eitherFLAG_SYSTEMorFLAG_LOCK.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| int | The positive numeric ID of the current wallpaper of the given kind, or a negative value if no such wallpaper is configured. | 
getWallpaperInfo
public WallpaperInfo getWallpaperInfo (int which)
Returns the information about the designated wallpaper if its current wallpaper is a live
 wallpaper component. Otherwise, if the wallpaper is a static image or is not set, or if
 the caller doesn't have the appropriate permissions, this returns null.
 
 In order to use this, apps should declare a <queries> tag with the action
 "android.service.wallpaper.WallpaperService". Otherwise, this method will return
 null if the caller doesn't otherwise have
 visibility of the wallpaper package.
 
| Parameters | |
|---|---|
| which | int: Specifies wallpaper to request (home or lock).
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| WallpaperInfo | |
| Throws | |
|---|---|
| IllegalArgumentException | if whichis not exactly one of
 {FLAG_SYSTEM,FLAG_LOCK}. | 
getWallpaperInfo
public WallpaperInfo getWallpaperInfo ()
Returns the information about the home screen wallpaper if its current wallpaper is a live
 wallpaper component. Otherwise, if the wallpaper is a static image or is not set, or if the
 caller doesn't have the appropriate permissions, this returns null.
 
 For devices running Android 13 or earlier, this method requires the
 Manifest.permission.QUERY_ALL_PACKAGES permission.
 
 For devices running Android 14 or later, in order to use this, apps should declare a
 <queries> tag with the action "android.service.wallpaper.WallpaperService".
 Otherwise, this method will return null if the caller doesn't otherwise have
 visibility of the wallpaper package.
 
| Returns | |
|---|---|
| WallpaperInfo | |
hasResourceWallpaper
public boolean hasResourceWallpaper (int resid)
Return whether any users are currently set to use the wallpaper
 with the given resource ID.  That is, their wallpaper has been
 set through setResource(int) with the same resource id.
| Parameters | |
|---|---|
| resid | int | 
| Returns | |
|---|---|
| boolean | |
isSetWallpaperAllowed
public boolean isSetWallpaperAllowed ()
Returns whether the calling package is allowed to set the wallpaper for the calling user.
 If this function returns false, any attempts to change the wallpaper will have
 no effect. Always returns true for device owner and profile owner.
| Returns | |
|---|---|
| boolean | |
See also:
isWallpaperSupported
public boolean isWallpaperSupported ()
Returns whether wallpapers are supported for the calling user. If this function returns
 false, any attempts to changing the wallpaper will have no effect,
 and any attempt to obtain of the wallpaper will return null.
| Returns | |
|---|---|
| boolean | |
peekDrawable
public Drawable peekDrawable ()
Important note:
- Up to Android 12, this method requires the
     Manifest.permission.READ_EXTERNAL_STORAGEpermission.
- Starting in Android 13, directly accessing the wallpaper is not possible anymore,
     instead the default system wallpaper is returned
     (some versions of Android 13 may throw a SecurityException).
- From Android 14, this method should not be used
     and will always throw a SecurityException.
-  Apps with Manifest.permission.MANAGE_EXTERNAL_STORAGEcan still access the real wallpaper on all versions.
 Equivalent to getDrawable().
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Returns | |
|---|---|
| Drawable | A Drawable object for the requested wallpaper.
 This value may be null. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
See also:
peekDrawable
public Drawable peekDrawable (int which)
 Important note:  only apps with
 Manifest.permission.MANAGE_EXTERNAL_STORAGE should use this method.
 Otherwise, a SecurityException will be thrown.
 
 Equivalent to getDrawable(int).
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Parameters | |
|---|---|
| which | int: TheFLAG_*identifier of a valid wallpaper type. Throws
     IllegalArgumentException if an invalid wallpaper is requested.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| Drawable | A Drawable object for the requested wallpaper.
 This value may be null. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
See also:
peekFastDrawable
public Drawable peekFastDrawable ()
 Important note:  only apps with
 Manifest.permission.MANAGE_EXTERNAL_STORAGE should use this method.
 Otherwise, a SecurityException will be thrown.
 
 Equivalent to getFastDrawable().
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Returns | |
|---|---|
| Drawable | An optimized Drawable object for the requested wallpaper.
 This value may be null. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
See also:
peekFastDrawable
public Drawable peekFastDrawable (int which)
 Important note:  only apps with
 Manifest.permission.MANAGE_EXTERNAL_STORAGE
 should use this method. Otherwise, a SecurityException will be thrown.
 
 Equivalent to getFastDrawable(int).
 
Requires
Manifest.permission.MANAGE_EXTERNAL_STORAGE or android.Manifest.permission.READ_WALLPAPER_INTERNAL
    | Parameters | |
|---|---|
| which | int: TheFLAG_*identifier of a valid wallpaper type.  Throws
     IllegalArgumentException if an invalid wallpaper is requested.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| Drawable | An optimized Drawable object for the requested wallpaper.
 This value may be null. | 
| Throws | |
|---|---|
| SecurityException | as described in the note | 
removeOnColorsChangedListener
public void removeOnColorsChangedListener (WallpaperManager.OnColorsChangedListener callback)
Stop listening to color updates.
| Parameters | |
|---|---|
| callback | WallpaperManager.OnColorsChangedListener: A callback to unsubscribe.
 This value cannot benull. | 
sendWallpaperCommand
public void sendWallpaperCommand (IBinder windowToken, String action, int x, int y, int z, Bundle extras)
Send an arbitrary command to the current active wallpaper.
| Parameters | |
|---|---|
| windowToken | IBinder: The window who these offsets should be associated
 with, as returned byView.getWindowToken(). | 
| action | String: Name of the command to perform.  This must be a scoped
 name to avoid collisions, such as "com.mycompany.wallpaper.DOIT". | 
| x | int: Arbitrary integer argument based on command. | 
| y | int: Arbitrary integer argument based on command. | 
| z | int: Arbitrary integer argument based on command. | 
| extras | Bundle: Optional additional information for the command, or null. | 
setBitmap
public int setBitmap (Bitmap fullImage, Rect visibleCropHint, boolean allowBackup, int which)
Version of setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) that allows the caller
 to specify which of the supported wallpaper categories to set.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| fullImage | Bitmap: A bitmap that will supply the wallpaper imagery. | 
| visibleCropHint | Rect: The rectangular subregion offullImagethat should be
     displayed as wallpaper.  Passingnullfor this parameter means that
     the full image should be displayed if possible given the image's and device's
     aspect ratios, etc. | 
| allowBackup | boolean:trueif the OS is permitted to back up this wallpaper
     image for restore to a future device;falseotherwise. | 
| which | int: Flags indicating which wallpaper(s) to configure with the new imagery.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| int | An integer ID assigned to the newly active wallpaper; or zero on failure. | 
| Throws | |
|---|---|
|  | java.io.IOException | 
| IllegalArgumentException | if the Bitmap is null | 
| IOException | |
See also:
setBitmap
public void setBitmap (Bitmap bitmap)
Change the current system wallpaper to a bitmap.  The given bitmap is
 converted to a PNG and stored as the wallpaper.  On success, the intent
 Intent.ACTION_WALLPAPER_CHANGED is broadcast.
 
This method is equivalent to calling
 setBitmap(android.graphics.Bitmap, android.graphics.Rect, boolean) and passing null for the
 visibleCrop rectangle and true for the allowBackup
 parameter.
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| bitmap | Bitmap: The bitmap to be used as the new system wallpaper. | 
| Throws | |
|---|---|
| IOException | If an error occurs when attempting to set the wallpaper to the provided image. | 
| IllegalArgumentException | if the Bitmap is null | 
setBitmap
public int setBitmap (Bitmap fullImage, Rect visibleCropHint, boolean allowBackup)
Change the current system wallpaper to a bitmap, specifying a hint about
 which subrectangle of the full image is to be visible.  The OS will then
 try to best present the given portion of the full image as the static system
 wallpaper image.  On success, the intent
 Intent.ACTION_WALLPAPER_CHANGED is broadcast.
 
Passing null as the visibleHint parameter is equivalent to
 passing (0, 0, fullImage.getWidth(), fullImage.getHeight()).
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| fullImage | Bitmap: A bitmap that will supply the wallpaper imagery. | 
| visibleCropHint | Rect: The rectangular subregion offullImagethat should be
     displayed as wallpaper.  Passingnullfor this parameter means that
     the full image should be displayed if possible given the image's and device's
     aspect ratios, etc. | 
| allowBackup | boolean:trueif the OS is permitted to back up this wallpaper
     image for restore to a future device;falseotherwise. | 
| Returns | |
|---|---|
| int | An integer ID assigned to the newly active wallpaper; or zero on failure. | 
| Throws | |
|---|---|
| IOException | If an error occurs when attempting to set the wallpaper to the provided image. | 
| IllegalArgumentException | If the visibleCropHintrectangle is
     empty or invalid or if the Bitmap is null | 
setDisplayPadding
public void setDisplayPadding (Rect padding)
Specify extra padding that the wallpaper should have outside of the display. That is, the given padding supplies additional pixels the wallpaper should extend outside of the display itself.
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER_HINTS.
 
 Requires Manifest.permission.SET_WALLPAPER_HINTS
| Parameters | |
|---|---|
| padding | Rect: The number of pixels the wallpaper should extend beyond the display,
 on its left, top, right, and bottom sides. | 
setResource
public int setResource (int resid, 
                int which)Version of setResource(int) that allows the caller to specify which
 of the supported wallpaper categories to set.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| resid | int: The resource ID of the bitmap to be used as the wallpaper image | 
| which | int: Flags indicating which wallpaper(s) to configure with the new imagery
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| int | An integer ID assigned to the newly active wallpaper; or zero on failure. | 
| Throws | |
|---|---|
|  | java.io.IOException | 
| IOException | |
See also:
setResource
public void setResource (int resid)
Change the current system wallpaper to the bitmap in the given resource.
 The resource is opened as a raw data stream and copied into the
 wallpaper; it must be a valid PNG or JPEG image.  On success, the intent
 Intent.ACTION_WALLPAPER_CHANGED is broadcast.
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| resid | int: The resource ID of the bitmap to be used as the wallpaper image | 
| Throws | |
|---|---|
| IOException | If an error occurs reverting to the built-in wallpaper. | 
setStream
public void setStream (InputStream bitmapData)
Change the current system wallpaper to a specific byte stream.  The
 give InputStream is copied into persistent storage and will now be
 used as the wallpaper.  Currently it must be either a JPEG or PNG
 image.  On success, the intent Intent.ACTION_WALLPAPER_CHANGED
 is broadcast.
 
This method is equivalent to calling
 setStream(java.io.InputStream, android.graphics.Rect, boolean) and passing null for the
 visibleCrop rectangle and true for the allowBackup
 parameter.
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| bitmapData | InputStream: A stream containing the raw data to install as a wallpaper.  This
     data can be in any format handled byBitmapRegionDecoder. | 
| Throws | |
|---|---|
| IOException | If an error occurs when attempting to set the wallpaper based on the provided image data. | 
setStream
public int setStream (InputStream bitmapData, Rect visibleCropHint, boolean allowBackup, int which)
Version of setStream(java.io.InputStream, android.graphics.Rect, boolean) that allows the caller
 to specify which of the supported wallpaper categories to set.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| bitmapData | InputStream: A stream containing the raw data to install as a wallpaper.  This
     data can be in any format handled byBitmapRegionDecoder. | 
| visibleCropHint | Rect: The rectangular subregion of the streamed image that should be
     displayed as wallpaper.  Passingnullfor this parameter means that
     the full image should be displayed if possible given the image's and device's
     aspect ratios, etc. | 
| allowBackup | boolean:trueif the OS is permitted to back up this wallpaper
     image for restore to a future device;falseotherwise. | 
| which | int: Flags indicating which wallpaper(s) to configure with the new imagery.
 Value is either0or a combination ofFLAG_SYSTEM, andFLAG_LOCK | 
| Returns | |
|---|---|
| int | An integer ID assigned to the newly active wallpaper; or zero on failure. | 
| Throws | |
|---|---|
|  | java.io.IOException | 
| IOException | |
See also:
setStream
public int setStream (InputStream bitmapData, Rect visibleCropHint, boolean allowBackup)
Change the current system wallpaper to a specific byte stream, specifying a
 hint about which subrectangle of the full image is to be visible.  The OS will
 then try to best present the given portion of the full image as the static system
 wallpaper image.  The data from the given InputStream is copied into persistent
 storage and will then be used as the system wallpaper.  Currently the data must
 be either a JPEG or PNG image.  On success, the intent
 Intent.ACTION_WALLPAPER_CHANGED is broadcast.
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER.
 
 Requires Manifest.permission.SET_WALLPAPER
| Parameters | |
|---|---|
| bitmapData | InputStream: A stream containing the raw data to install as a wallpaper.  This
     data can be in any format handled byBitmapRegionDecoder. | 
| visibleCropHint | Rect: The rectangular subregion of the streamed image that should be
     displayed as wallpaper.  Passingnullfor this parameter means that
     the full image should be displayed if possible given the image's and device's
     aspect ratios, etc. | 
| allowBackup | boolean:trueif the OS is permitted to back up this wallpaper
     image for restore to a future device;falseotherwise. | 
| Returns | |
|---|---|
| int | An integer ID assigned to the newly active wallpaper; or zero on failure. | 
| Throws | |
|---|---|
| IOException | If an error occurs when attempting to set the wallpaper based on the provided image data. | 
| IllegalArgumentException | If the visibleCropHintrectangle is
     empty or invalid. | 
See also:
setWallpaperOffsetSteps
public void setWallpaperOffsetSteps (float xStep, 
                float yStep)For applications that use multiple virtual screens showing a wallpaper, specify the step size between virtual screens. For example, if the launcher has 3 virtual screens, it would specify an xStep of 0.5, since the X offset for those screens are 0.0, 0.5 and 1.0
| Parameters | |
|---|---|
| xStep | float: The X offset delta from one screen to the next one | 
| yStep | float: The Y offset delta from one screen to the next one | 
setWallpaperOffsets
public void setWallpaperOffsets (IBinder windowToken, float xOffset, float yOffset)
Set the display position of the current wallpaper within any larger space, when that wallpaper is visible behind the given window. The X and Y offsets are floating point numbers ranging from 0 to 1, representing where the wallpaper should be positioned within the screen space. These only make sense when the wallpaper is larger than the display.
| Parameters | |
|---|---|
| windowToken | IBinder: The window who these offsets should be associated
 with, as returned byView.getWindowToken(). | 
| xOffset | float: The offset along the X dimension, from 0 to 1. | 
| yOffset | float: The offset along the Y dimension, from 0 to 1. | 
suggestDesiredDimensions
public void suggestDesiredDimensions (int minimumWidth, 
                int minimumHeight)For use only by the current home application, to specify the size of wallpaper it would like to use. This allows such applications to have a virtual wallpaper that is larger than the physical screen, matching the size of their workspace.
Calling this method from apps other than the active
 home app is not guaranteed to work properly.  Other apps that supply
 wallpaper imagery should use getDesiredMinimumWidth() and
 getDesiredMinimumHeight() and construct a wallpaper that
 matches those dimensions.
 
This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER_HINTS.
| Parameters | |
|---|---|
| minimumWidth | int: Desired minimum width | 
| minimumHeight | int: Desired minimum height | 
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-08-20 UTC.
