Android 如何通过程序设置活动墙纸?

Android 如何通过程序设置活动墙纸?,android,Android,我想为我的设备设置一个指定的实时壁纸,因此我模仿LivePicker应用程序中的liveWallparPreview.java。 我的代码是: public void setLiveWallpaperClick(View v) { Intent intent = new Intent(WallpaperService.SERVICE_INTERFACE); intent.setClassName("com.android.wallpaper", "com.android.wal

我想为我的设备设置一个指定的实时壁纸,因此我模仿LivePicker应用程序中的liveWallparPreview.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" />


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

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

使用以下代码设置自定义实时墙纸:

意图=新的 意图(墙纸管理器、行动、改变、生活、墙纸); intent.putExtra(墙纸管理器.EXTRA\u LIVE\u墙纸\u组件, 新组件名(this,mywallperService.class));星触觉(意向)

经@Judy建议的额外许可


这里的MyWallperService是自定义墙纸服务。

是否用所需墙纸替换当前墙纸?例如,如果您下载了另一张壁纸,并且您知道其软件包名称,您可以通过应用程序设置该名称吗?那么解决方案是什么??