2011-08-31 19 views
1

ライブ壁紙をプログラムで設定する方法。私は自分のデバイスに1つの指定されたライブ壁紙を設定したい。私はLivePickerアプリケーションにあるLiveWallpaperPreview.javaを真似ています。ライブ壁紙をプログラムで設定する方法は?

ます。public void setLiveWallpaperClick(ビューV){

Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE); 
    intent.setClassName("com.android.wallpaper", "com.android.wallpaper.galaxy.GalaxyWallpaper"); 
try { 
    mWallpaperManager.getIWallpaperManager().setWallpaperComponent(
      intent.getComponent()); 

} catch (RemoteException e) { 
    e.printStackTrace(); 
    // do nothing 
} catch (RuntimeException e) { 
    e.printStackTrace(); 
} 
finish(); 

} とのmanifest.xml内の権限は次のとおりです: 私のコードがある

<uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" /> 
    <uses-permission android:name="android.permission.BIND_WALLPAPER" /> 
    <uses-permission android:name="android.permission.SET_WALLPAPER" /> 

しかし、それはで動作することはできません私のアプリケーション。コードは正しいですか?

+0

現在の壁紙を希望の壁紙に置き換えていますか?たとえば、ダウンロードされた別の壁紙がいくつかあり、そのパッケージ名が分かっている場合は、アプリケーションからその名前を設定できますか? – Naskov

答えて

3

ありがとうございました!私は根本的な原因を見つけました:コードは正しいです。しかしapkは/ system/appディレクトリにプッシュされなければならない。 apkが/ data/appにインストールされていれば、動作しません。/system/appと/ data/appの間にはいくつかの異なるパーミッションがあると思います。カスタムライブ壁紙を設定するためのコード次

+0

ワットは解決策ですか? – Fakher

0

使用:

テントの意図=新しい テント(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPERを)。 intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT、 新しいComponentName(this、MyWallpaperService.class)); startActivity(インテント);追加の許可を得て

はここMyWallpaperServiceは、カスタム壁紙サービスです@Judy

することにより、上記提案しました。

関連する問題