【问题标题】:How to fix this bug : "android.app.RemoteServiceException: Bad notification posted from package"如何修复此错误:“android.app.RemoteServiceException:从包发布的错误通知”
【发布时间】:2014-09-18 01:34:03
【问题描述】:

崩溃信息是:

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 找到可绘制资源。你怎么看?

【问题讨论】:

  • 请发布发生此错误的代码
  • 用户发送的crash信息,本项目使用的通知数超过十个。我不知道是哪一个坠毁了。
  • 哪个进程崩溃了?

标签: android android-notifications


【解决方案1】:

我也遇到了同样的问题。我注意到我将 Vector Drawable 用于小图标,并且此错误仅发生在棒棒糖之前的设备上。为 pre-lollipop 设备使用 PNG 资源解决了这个问题。

【讨论】:

  • 解决了我的问题!
  • 使用 PNG 并不总能解决问题,有时我仍然会在 Android 5.1 上遇到此错误。更多解释在这里:stackoverflow.com/a/26024747/2206688
【解决方案2】:

TL;DR

使用 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 中。 我们正在使用以下 sn-p 设置另一个通知图标:

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

这里,@drawable/ic_notification 是一个可绘制矢量 (SVG)。我将其更改为 PNG,崩溃消失了。

【讨论】:

  • 感谢您的帮助
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-18
    • 2018-06-15
    • 2014-10-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-28
    相关资源
    最近更新 更多