如何按程序设置动态壁纸?

时间:2011-08-31 07:33:32

标签: android

如何按程序设置活动墙纸。我想为我的设备设置一个指定的活壁纸。我模仿LivePicker应用程序中的LiveWallpaperPreview.java。 我的代码是:

public void setLiveWallpaperClick(View 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" />

但它在我的应用程序中不起作用。代码是对的吗?

2 个答案:

答案 0 :(得分:3)

谢谢!我找到了根本原因:代码是对的。但是必须将apk推送到/ system / app目录,它才能正常工作。如果apk安装在/ data / app中,则无法正常工作。我认为/ system / app和/ data / app之间存在一些不同的权限。

答案 1 :(得分:0)

使用以下代码设置自定义动态壁纸:

  

意图意图=新   意图(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);         intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,                 new ComponentName(this,MyWallpaperService.class)); startActivity(意向);

获得@Judy

以上建议的其他权限

此处MyWallpaperService是自定义壁纸服务。