背景
我有一个动态壁纸,它使用相对较新的 API(来自 Android 8.1 - API 26)来请求操作系统使用自定义颜色:
问题
在 Android 8.1 甚至 Android P DP1 上,所有这些功能都可以正常工作,因为它们与普通壁纸对颜色所做的一样,如果选择的颜色足够暗,则会影响通知抽屉。下面是选择非深色和选择深色背景的比较:
问题是,在 Android P beta (DP2) 上,即使调用了这个函数,它也不会做任何事情。
要自行测试,您可以尝试我在此处发布的完整项目。
我发现了什么
我想也许 API 已经改变了,所以我试图找出哪些函数可用,但是我看不到任何新的东西。
我尝试使用各种方式返回自定义颜色:
一个。
WallpaperColors(Color.valueOf(0xff000000.toInt()), Color.valueOf(0xff000000.toInt()), Color.valueOf(0xff000000.toInt()))
湾。
WallpaperColors.fromDrawable(ColorDrawable(0xff000000.toInt()))
C。
WallpaperColors.fromDrawable(BitmapDrawable(completelyBlackBitmap))
d。
WallpaperColors.fromBitmap(completelyBlackBitmap)
可悲的是,没有一个工作(fromBitmap
是在 Android 8.1 上运行良好的那个)。
看到这一点,我重新检查了我的代码是否正常,并注意到内置的动态壁纸工作正常,并且选择纯黑色壁纸(而不是动态壁纸)也影响了操作系统的 UI。
看到它适用于内置应用程序,我已经向谷歌报告了这个问题,却发现他们不明白我在说什么,每次我试图告诉他们他们误解了它不同:
我想确保这不仅仅是我的应用程序的问题,而是其他应用程序的问题,所以我测试了 Muzei 动态壁纸应用程序,它实际上是由 Google 自己的一位开发人员制作的。在 Android 8.1 上运行良好时,问题也确实发生在那里。
我只是好奇,想看看如果我将 Muzei 移动为系统应用程序是否会出现问题,但这样做之后,我发现问题仍然存在。
问题
怎么已经不行了?
有解决方法/解决方法吗?
为什么它适用于内置应用程序和普通壁纸,但不适用于第三方应用程序?我认为他们的代码没有任何区别。