如何通过程序放置动态墙纸?

问题描述 投票:1回答:2

我想为我的设备设置一个指定的动态壁纸,所以我模仿了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" />

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

android
2个回答
3
投票

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


0
投票

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

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

[上面有@Judy建议,并获得了额外的许可

这里MyWallpaperService是自定义墙纸服务。

© www.soinside.com 2019 - 2024. All rights reserved.