我正在使用WallpaperManager.setBitmap来设置设备的壁纸。 我已正确设置权限。 99%的情况下它可以正常工作,但有时它只是设置默认值而不是我的默认值。 没有例外(我有try-catch,我有日志。没有例外。没有崩溃。没什么)。 该方法无效,因此调用后也无需检查。 它只是被调用而不是设置给定的位图 - 它设置默认值。
以下是代码:
WallpaperManager.getInstance(context).setBitmap(bitmap);
位图不会被回收(我在到达这行代码之前检查它)。
任何想法可能出错或使用什么替代品?
使用资源不是一个选项,因为位图是在内存中动态生成的。
生成的位图大小,在我的设备的情况下(Nexus 5)始终是相同的:2160x1920,无论成功或失败的结果。 此外 - 它是一个PNG。
我将同时使用setStream运行一些测试: http://developer.android.com/reference/android/app/WallpaperManager.html#setStream(java.io.InputStream)
希望它效果更好......
答案 0 :(得分:0)
尝试使用此方法,直接将位图作为可绘制资源引用:
WallpaperManager.getInstance(context).setResource(R.drawable.myImageId);
方法调用假设您的位图位于可绘制的资源文件夹中(而不是资产)。
有关详细信息,请参阅API docs。