如何解决这个错误:“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) 

我认为这个问题是无法通过resIdfind可绘制的资源。 你怎么看?

Solutions Collecting From Web of "如何解决这个错误:“android.app.RemoteServiceException:从包中发布的错误通知”"

我面临同样的问题。 我注意到我正在使用vector绘制的小图标,这个错误只发生在棒棒糖的前期设备上。 使用PNG资源预棒棒糖设备解决了这个问题。

我以前看过“无法创build图标:StatusBarIcon”错误,它发生在NotificationCompat.Builder实例的setSmallIcon上使用无效的资源ID。 另外,如果您根本没有设置小图标,那么您的通知将不会显示。 如果代码尝试在运行时获取资源ID,则可以使用getApplicationInfo()。图标作为快速回退。

TL; DR

使用Firebasesfunction设置通知时,通过在AndroidManifest.xml中设置default_notification_icon ,使用PNG而不是vector

详细描述

在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被调用(不仅用debugging中断点检查,而且还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是一个vector绘制(SVG)。 我把它改成PNG,崩溃消失了。