Функциональность "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 заботится о вещах.

Тем не менее, я по-прежнему поддерживаю исправление самостоятельно, на случай, если оно понадобится в других местах.

Другие вопросы по тегам