Setting live wallpaper programmatically

18,049

Solution 1

Alright, just so I stop getting downvotes for an outdated answer. Please see Error 454's answer below for a more robust solution which will send the user directly to the wallpaper preview screen on Jelly Bean and up devices.

========================================

Here's how to start the wallpaper chooser, from which the user can select your wallpaper. The toast is just a way to explain to the user what's going on.

Toast toast = Toast.makeText(this, "Choose '<WALLPAPER NAME>' from the list to start the Live Wallpaper.",Toast.LENGTH_LONG);
toast.show();

Intent intent = new Intent();
intent.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
startActivity(intent);

Solution 2

There are now two ways to accomplish this as Jelly Bean provides a way to directly set the live wallpaper. This boilerplate code will choose the best method available.

Intent i = new Intent();

if(Build.VERSION.SDK_INT > 15){
    i.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);

    String p = HypercaneWallpaperService.class.getPackage().getName();
    String c = HypercaneWallpaperService.class.getCanonicalName();        
    i.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(p, c));
}
else{
    i.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
}
getActivity().startActivityForResult(i, 0);
Share:
18,049

Related videos on Youtube

prashant
Author by

prashant

SOreadytohelp

Updated on April 16, 2020

Comments

  • prashant
    prashant about 4 years

    Is it possible to set a live wallpaper using some lines of code. For example, i want to tell my users that a live wallpaper is available "click here to set it".

    • theomega
      theomega over 13 years
      I don't think that is possible, you can launch the wallpaper-selector but you can't set the Wallpaper directly.
    • prashant
      prashant over 13 years
      So i guess my next question is .. how to launch it using code?
    • mahboudz
      mahboudz almost 13 years
      It seems that it is possible to set the wallpaper directly: stackoverflow.com/questions/2205092/…
    • stealthcopter
      stealthcopter over 12 years
      @mahboudz that's only possible for static wallpapers (images) not livewallpapers.
  • Naskov
    Naskov over 11 years
    And what if I don't own that wallpaper? I mean how to set another wallpaper using my application? can you check this one? stackoverflow.com/questions/13683464/…
  • Naskov
    Naskov over 11 years
    can I change it without user interaction? Can you please check this one? stackoverflow.com/questions/13683464/…
  • Josh
    Josh over 11 years
    No, you can't. Error454's answer is as close as it gets without rooting. I don't know how you'd do it with root, though. Maybe ask around on XDA.
  • Twinsen
    Twinsen over 10 years
    My wallpaper service was in another package than the main package. The correct package I had to supply was: String String p = this.getContext().getPackageName();