【发布时间】:2022-11-06 10:58:37
【问题描述】:
我会检查我的动态壁纸应用程序是否设置为动态壁纸。
以下代码适用于安卓 <= 12,但不在安卓 13 (sdk 33).
public static boolean isLiveWallpaper(Context context) {
if (Service._handler == null) {
return false;
}
WallpaperManager wpm = WallpaperManager.getInstance(context);
WallpaperInfo info = wpm.getWallpaperInfo();
try {
return (info != null && info.getPackageName().equals(context.getPackageName()));
} catch (Exception e) {
return false;
}
}
在 Android 13 wpm.getWallpaperInfo() 上始终返回 null。
为什么?我在 Google 和 Android 开发者文档上进行了搜索,但没有找到任何东西......
编辑: 我使用此代码设置了动态壁纸并且它可以工作,但是如果设置了动态壁纸,我无法以编程方式检查。
Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
new ComponentName(context, Service.class));
context.startActivity(intent);
【问题讨论】:
-
该函数的文档声称它为静态图像返回 null,这可能是这种情况吗?
-
@PaulT。不,这不是,我设置了动态壁纸(我添加了一段代码)。并且相同的代码适用于以前的版本(<= 12)。
-
那么对于 v13 的 Android 来说,这听起来像是一个问题?您的示例应该足以让他们重现。