【问题标题】:Setting live wallpaper programmatically以编程方式设置动态壁纸
【发布时间】:2011-01-28 18:00:42
【问题描述】:

是否可以使用一些代码行设置动态壁纸。例如,我想告诉我的用户可以使用动态壁纸“单击此处进行设置”。

【问题讨论】:

  • 我不认为这是可能的,你可以启动壁纸选择器但你不能直接设置壁纸。
  • 所以我想我的下一个问题是..如何使用代码启动它?
  • 好像可以直接设置壁纸:stackoverflow.com/questions/2205092/…
  • @mahboudz 这仅适用于静态壁纸(图像)而不是动态壁纸。

标签: android live-wallpaper


【解决方案1】:

现在有两种方法可以实现这一点,因为 Jelly Bean 提供了一种直接设置动态壁纸的方法。此样板代码将选择可用的最佳方法。

Intent i = new Intent();

if(Build.VERSION.SDK_INT > 15){
    i.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);

    String p = HypercaneWallpaperService.class.getPackage().getName();
    String c = HypercaneWallpaperService.class.getCanonicalName();        
    i.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, new ComponentName(p, c));
}
else{
    i.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
}
getActivity().startActivityForResult(i, 0);

【讨论】:

  • 如果我不拥有那张壁纸怎么办?我的意思是如何使用我的应用程序设置另一个壁纸?你能检查一下这个吗? stackoverflow.com/questions/13683464/…
  • 我的壁纸服务位于主包之外的另一个包中。我必须提供的正确包是:String String p = this.getContext().getPackageName();
【解决方案2】:

好的,这样我就不再对过时的答案投反对票了。请参阅下面的错误 454 的答案以获得更强大的解决方案,该解决方案将用户直接发送到 Jelly Bean 和更高版本设备上的壁纸预览屏幕。

=========================================

这里介绍了如何启动壁纸选择器,用户可以从中选择您的壁纸。 Toast 只是向用户解释发生了什么的一种方式。

Toast toast = Toast.makeText(this, "Choose '<WALLPAPER NAME>' from the list to start the Live Wallpaper.",Toast.LENGTH_LONG);
toast.show();

Intent intent = new Intent();
intent.setAction(WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER);
startActivity(intent);

【讨论】:

  • 我可以在没有用户交互的情况下更改它吗?你能检查一下这个吗? stackoverflow.com/questions/13683464/…
  • 不,你不能。 Error454 的答案与没有生根的情况一样接近。不过,我不知道您将如何使用 root 来完成。也许在 XDA 上四处询问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
相关资源
最近更新 更多