Is it possible somehow to set Live Wallpaper programmatically using my Application?
I am working on an Application that her purpose is to choose some of the Install
Sorry to break it to the nay sayers but it is possible to set a live wallpaper programmatically WITHOUT user interaction. It requires:
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
NOTE: For item #3, I used my own live wallpaper, MyWallpaperService class
This can only be done if your app is system-privileged and has this permission in the manifest:
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
Now, using reflection, you can call the hidden methods of WallpaperManager to manually set the live wallpaper:
WallpaperManager manager = WallpaperManager.getInstance(context);
Method method = WallpaperManager.class.getMethod("getIWallpaperManager", null);
Object objIWallpaperManager = method.invoke(manager, null);
Class[] param = new Class[1];
param[0] = ComponentName.class;
method = objIWallpaperManager.getClass().getMethod("setWallpaperComponent", param);
//get the intent of the desired wallpaper service. Note: I created my own
//custom wallpaper service. You'll need a class reference and package
//of the desired live wallpaper
Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE);
intent.setClassName(context.getPackageName(), MyWallpaperService.class.getName());
//set the live wallpaper (throws security exception if you're not system-privileged app)
method.invoke(objIWallpaperManager, intent.getComponent());
Refer to the source code:
Android OS prior to Jelly Bean does not allow you to programatically set a live wallpaper. For now Jelly Bean supports changing the Live Wallpaper programtically without user interaction