Функциональность "Theming Icons" вылетает живыми обоями на Android 12.
Недавно я заметил, что мои приложения с живыми обоями дают сбой, когда пользователи пытаются установить недавно представленные функции «Тематические значки» на Android 12. Эта новая функция вычисляет палитру цветов из текущих статических обоев пользователя и использует эту палитру для раскрашивания некоторых из иконки других приложений (особенность нового дизайна «Material You»). Но по какой-то причине, когда он работает с живыми обоями, приложение вылетает со следующим журналом:
Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'android.graphics.Bitmap android.graphics.drawable.BitmapDrawable.getBitmap()' on a null object reference
at android.os.Parcel.createExceptionOrNull(Parcel.java:2443)
at android.os.Parcel.createException(Parcel.java:2421)
at android.os.Parcel.readException(Parcel.java:2404)
at android.os.Parcel.readException(Parcel.java:2346)
at android.service.wallpaper.IWallpaperConnection$Stub$Proxy.onWallpaperColorsChanged(IWallpaperConnection.java:298)
at android.service.wallpaper.WallpaperService$IWallpaperEngineWrapper.executeMessage(WallpaperService.java:2586)
at com.android.internal.os.HandlerCaller$MyHandler.handleMessage(HandlerCaller.java:44)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8582)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1133)
Caused by android.os.RemoteException: Remote stack trace:
at com.samsung.server.wallpaper.LegibilityColor.convertColors(LegibilityColor.java:418)
at com.android.server.wallpaper.WallpaperManagerService$WallpaperConnection.onWallpaperColorsChanged(WallpaperManagerService.java:2169)
at android.service.wallpaper.IWallpaperConnection$Stub.onTransact(IWallpaperConnection.java:158)
at android.os.Binder.execTransactInternal(Binder.java:1215)
at android.os.Binder.execTransact(Binder.java:1179)
На данный момент я могу наблюдать этот сбой только на телефонах Samsung Galaxy S21 / S21 Ultra, но он будет присутствовать на многих других телефонах, когда пользователи обновят свою систему до Android 12.
В настоящее время я не могу воспроизвести этот сбой, потому что у меня нет Galaxy S21, а в эмуляторе Android Studio все еще отсутствует опция «Тематические значки» (возможно, потому, что эта функция все еще находится в стадии бета-тестирования).
Кто-нибудь знает, как решить эту катастрофическую проблему? Любая помощь приветствуется!
3 ответа
Решение найдено.
Имя файла: wallpaper.xml
Был:
<wallpaper bla bla bla
android:thumbnail="@mipmap/ic_launcher"
/>
Изменился на:
<wallpaper bla bla bla
android:thumbnail="@drawable/thumbnail"
/>
Скопировал значок приложения в: drawable/thumbnail.png
Ржунимагу!
Некоторое время искал подобную проблему в обзорах популярных живых обоев. Подобные отзывы я нашел только для одного приложения. Сегодня обновил телефон. Все мои живые обои перестали работать должным образом. Затем я установил «Земля и Луна», и это приложение работает нормально. Значит, мы что-то делаем не так или, наоборот, что-то не делаем :) В ближайшее время начну исследовать эту проблему.
Один из пользователей моего приложения, использующий Samsung S21, сказал мне, что новое обновление ОС Samsung (SP1A.210812.016.G991BXXU3BUKG) устранило проблему для них еще до того, как я внедрил исправление @Aleksey. Приятно видеть, что Samsung заботится о вещах.
Тем не менее, я по-прежнему поддерживаю исправление самостоятельно, на случай, если оно понадобится в других местах.