Как исправить эту ошибку: «android.app.RemoteServiceException: плохое уведомление, отправленное из пакета»

Информация о сбое:

android.app.RemoteServiceException: Bad notification posted from package com.xx.xx: Couldn't create icon: StatusBarIcon(pkg=com.xx.xx user=0 id=0x7f02035c level=0 visible=true num=0 ) android.app.ActivityThread$H.handleMessage(ActivityThread.java:1372) android.os.Handler.dispatchMessage(Handler.java:102) android.os.Looper.loop(Looper.java:136) android.app.ActivityThread.main(ActivityThread.java:5139) java.lang.reflect.Method.invokeNative(Native Method) java.lang.reflect.Method.invoke(Method.java:515) com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:796) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:612) dalvik.system.NativeStart.main(Native Method) 

Я думаю, проблема в том, что RESID не может найти ресурс, который можно извлечь. Каково ваше мнение?

Я столкнулся с той же проблемой. Я заметил, что я использовал Vector Drawable для небольшого значка, и эта ошибка произошла только на устройствах с предварительным леллипопом. Исправлена ​​проблема с использованием ресурса PNG для устройств с предварительным лечением.

Я видел ошибку «Не удалось создать значок: StatusBarIcon» раньше, и это происходит из-за использования недопустимого идентификатора ресурса с помощью setSmallIcon в экземпляре NotificationCompat.Builder. Также, если вы не устанавливаете маленький значок вообще, ваше уведомление не будет отображаться. Вы можете использовать getApplicationInfo (). Icon как быстрый откат, если ваш код пытается получить идентификатор ресурса во время выполнения.

TL; DR

При использовании возможности Firebases установить уведомление, используйте PNG вместо вектора, установив default_notification_icon в AndroidManifest.xml

Длинное описание

У нас возникла проблема при получении push-уведомлений на LG G2 с Android 4.4.2. Ткань (и catlog) показала следующую трассировку стека:

 Fatal Exception: android.app.RemoteServiceException: Bad notification posted from package de.xxx.xxx: Couldn't create icon: StatusBarIcon(pkg=de.xxx.xxx=0 id=0x7f0200a6 level=0 visible=true num=0 ) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1367) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5105) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) at dalvik.system.NativeStart.main(NativeStart.java) 

Обратите внимание, что в стеке нет класса, соответствующего нашему пакету. Также onMessageReceived (проверяется не только с точкой отладки, но и с Log.e(TAG, "...") ). Это означает, что мы не устанавливаем уведомление, это Firebase SDK.

Поскольку нет никакого кода, я понял (после болезненных часов головокружения) ошибка должна быть в AndroidManifest.xml. Мы устанавливаем другой значок уведомления со следующим фрагментом:

 <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" /> 

Здесь @drawable/ic_notification – векторный переносимый (SVG). Я сменил его на PNG, и авария исчезла.