2011-01-28 70 views
19

是否可以使用某些代碼行設置動態壁紙。例如,我想告訴我的用戶一個動態壁紙可用「點擊此處進行設置」。以編程方式設置動態壁紙

+0

我不認爲這是可能的,你可以啓動壁紙選擇器,但你不能直接設置壁紙。 – theomega 2011-01-28 18:11:00

+0

所以我想我的下一個問題是..如何使用代碼啓動它? – prashant 2011-01-28 18:30:15

+0

它似乎可以直接設置壁紙:http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper-image – mahboudz 2011-09-28 19:27:54

回答

25

好的,只是讓我停止接受過時的回答。請參閱下面的錯誤454的答案,以獲得更強大的解決方案,該解決方案將直接將用戶發送到Jelly Bean和設備上的壁紙預覽屏幕。

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

這裏是如何啓動壁紙選擇器,用戶可以從中選擇壁紙。敬酒只是向用戶解釋發生了什麼的一種方式。

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

現在有兩種方法可以做到這一點,因爲Jelly Bean提供了一種直接設置動態壁紙的方法。該樣板代碼將選擇可用的最佳方法。

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