przykro złamać go do ba Sayers, ale jest możliwe, aby ustawić na żywo tapety programowo BEZ interakcji użytkownika. To wymaga:
- Twoja aplikacja będzie układ uprzywilejowanych
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
- odbicie Java (kod Super hacking)
- Odniesienie klasa do żądanej WallpaperService (Live Wallpaper)
UWAGA: Dla pozycji 3 użyłem własnej tapety na żywo, MyWallpaperService klasa
Można to zrobić tylko wtedy, gdy aplikacja jest systemem uprzywilejowanych i ma to uprawnienie w manifeście:
<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
Teraz, przy użyciu odbicia można wywołać ukryte metody WallpaperManager ręcznie ustawić na żywo tapety :
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());
Zapoznaj się z kodem źródłowym:
Czy możesz podać przykład, jak to zrobić? Mam listę wszystkich Live Wallpapers za pośrednictwem mojej aplikacji i mam ich nazwy pakietów gotowe, więc jak zatrzymać obecny LiveWallpaper i rozpocząć nowy? – Naskov
Proszę spojrzeć na http://stackoverflow.com/questions/12842924/how-do-i-move-to-live-wallpaper-preview-from-app –
to pytanie dotyczy ustawienia własnego Live Wapplaper, ale ja pytam o zmianę Zainstalowane tapety na żywo za pośrednictwem mojej aplikacji? Czy możesz tu odpowiedzieć? – Naskov