2011-01-28 17 views
19

Czy można ustawić żywą tapetę za pomocą niektórych linii kodu. Na przykład chcę powiedzieć moim użytkownikom, że dostępna jest tapeta na żywo "kliknij tutaj, aby ją ustawić".Programowe programowanie tapety na żywo

+0

Nie sądzę, że jest to możliwe, możesz uruchomić selektor tapet, ale nie możesz ustawić tapety bezpośrednio. – theomega

+0

Więc myślę, że moje następne pytanie jest .. jak uruchomić go za pomocą kodu? – prashant

+0

Wygląda na to, że można bezpośrednio ustawić tapetę: http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper-image – mahboudz

Odpowiedz

25

W porządku, więc przestaję uzyskiwać tanie odpowiedzi na nieaktualną odpowiedź. Poniżej znajduje się odpowiedź na błąd 454, aby uzyskać bardziej niezawodne rozwiązanie, które wyśle ​​użytkownika bezpośrednio do ekranu podglądu tapety na Jelly Bean i do urządzeń.

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

Oto jak aby uruchomić selektor tapet, z którego użytkownik może wybrać tapetę. Toast to tylko sposób na wyjaśnienie użytkownikowi, co się dzieje.

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

Czy mogę to zmienić bez interakcji użytkownika? Czy możesz to sprawdzić? http://stackoverflow.com/questions/13683464/set-live-wallpaper-programowo-on-rooted-device-android – Naskov

+0

Nie, nie możesz. Odpowiedź Error454 jest tak bliska, jak się da bez zrootowania. Nie wiem, jak byś to zrobił z rootem. Może zapytaj na XDA. – Josh

30

Istnieją teraz dwa sposoby, aby to osiągnąć, ponieważ Jelly Bean zapewnia sposób bezpośredniego ustawienia tapety na żywo. Ten kod standardu wybierze najlepszą dostępną metodę.

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

A co, jeśli nie posiadam tej tapety? Chodzi mi o to, jak ustawić kolejną tapetę za pomocą mojej aplikacji? czy możesz to sprawdzić? http://stackoverflow.com/questions/13683464/set-live-wallpaper-programmically-on-rooted-device-android – Naskov

+0

Moja usługa tapety była w innym pakiecie niż pakiet główny. Poprawny pakiet, który musiałem dostarczyć, to: String String p = this.getContext(). GetPackageName(); – Twinsen

Powiązane problemy