崩溃信息是:
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找到可绘制资源。你的意见是什么?
答案 0 :(得分:11)
我遇到了同样的问题。我注意到我使用Vector Drawable作为小图标,这个错误只发生在棒棒糖前设备上。为棒棒糖前设备使用PNG资源解决了这个问题。
答案 1 :(得分:5)
使用Firebases设置通知时,通过在AndroidManifest.xml中设置default_notification_icon
来使用PNG而不是矢量
我们在使用Android 4.4.2在LG G2上接收推送通知时遇到了问题 Fabric(和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,崩溃了。
答案 2 :(得分:3)
我之前看到过“无法创建图标:StatusBarIcon”错误,而且是因为在NotificationCompat.Builder实例上使用setSmallIcon的无效资源ID。此外,如果您根本没有设置小图标,则不会显示您的通知。如果您的代码试图在运行时获取资源ID,则可以使用getApplicationInfo()。icon作为快速回退。