2011-01-28 12 views
19

いくつかのコード行を使用してライブ壁紙を設定することは可能ですか?たとえば、ライブ壁紙が「ここをクリックして設定」できることをユーザーに伝えたいとします。ライブ壁紙をプログラムで設定する

+0

壁紙セレクタは起動できますが、壁紙を直接設定することはできません。 – theomega

+0

私の次の質問は..コードを使って起動する方法は? – prashant

+0

壁紙を直接設定することは可能です:http://stackoverflow.com/questions/2205092/android-how-to-set-the-wallpaper-image – mahboudz

答えて

25

いいえ、ちょうど私は時代遅れの回答のために下降音を止めます。 Jelly Beanやアップデバイスの壁紙プレビュー画面にユーザーを直接送信するより堅牢なソリューションについては、以下のエラー454の回答をご覧ください。ここで

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

の方法ですユーザーがあなたの壁紙を選択することができる壁紙の選択を開始する。トーストは、何が起こっているのかをユーザーに説明する方法に過ぎません。

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

ユーザーの操作なしで変更することはできますか?これをチェックしていただけますか? http://stackoverflow.com/questions/13683464/set-live-wallpaper-programmatically-on-rooted-device-android – Naskov

+0

いいえ、できません。 Error454の答えは、根絶することなく得られるほど近いです。私はあなたがルートでそれをどうやってやるのか分からない。たぶんXDAについて聞いてみてください。 – Josh

30

これを実現する2つの方法があります。これは、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); 
+1

その壁紙を所有していないとどうなりますか?私は自分のアプリケーションを使って別の壁紙を設定する方法を意味しますか?あなたはこれをチェックできますか? http://stackoverflow.com/questions/13683464/set-live-wallpaper-programmatically-on-rooted-device-android – Naskov

+0

私の壁紙サービスはメインパッケージとは別のパッケージに入っていました。私が提供しなければならなかった正しいパッケージは次のとおりです:String String p = this.getContext()。getPackageName(); – Twinsen

関連する問題