我想为我的设备设置一个指定的动态壁纸,所以我模仿了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" />
但是它不能在我的应用程序中工作。代码正确吗?
谢谢!我找到了根本原因:代码正确。但是apk必须被推送到/ system / app目录,它可以工作。如果apk安装在/ data / app中,则无法使用。我认为/ system / app和/ data / app之间有一些不同的权限。
使用以下代码来设置自定义动态壁纸:
意图意图=新目的(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,新的ComponentName(this,MyWallpaperService.class)); startActivity(intent);
[上面有@Judy建议,并获得了额外的许可
这里MyWallpaperService是自定义墙纸服务。