Setting live wallpaper programmatically Setting live wallpaper programmatically android android

Setting live wallpaper programmatically


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);


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);