有时我的应用程序会遇到这种异常:
Fatal Exception: android.app.RemoteServiceException: Bad notification posted from package com.packagename: Couldn't expand RemoteViews for: StatusBarNotification(pkg=com.packagename user=UserHandle{0} id=136094146 tag=null score=0: Notification(pri=0 contentView=com.packagename/0x109007e vibrate=default sound=default defaults=0xffffffff flags=0x11 kind=[null]))
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:149)
at android.app.ActivityThread.main(ActivityThread.java:5257)
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:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:609)
at dalvik.system.NativeStart.main(NativeStart.java)
代码创建通知:
PendingIntent intent = PendingIntent.getActivities(this, id,
notificationIntents, PendingIntent.FLAG_UPDATE_CURRENT);
int color = ContextCompat.getColor(this, R.color.notif_background);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setContentText(description)
.setSmallIcon(getSmallIcon())
.setLargeIcon(getLargeIcon())
.setColor(color)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setAutoCancel(true)
.setStyle(new NotificationCompat.BigPictureStyle().bigLargeIcon(largeIcon))
.setContentIntent(intent);
if (title != null) {
notificationBuilder.setContentTitle(title)
.setTicker(title)
.setStyle(new NotificationCompat.BigTextStyle()
.setBigContentTitle(title).bigText(description));
} else {
notificationBuilder.setStyle(new NotificationCompat.BigTextStyle()
.bigText(description));
}
if (image != null) {
notificationBuilder
.setStyle(new NotificationCompat.BigPictureStyle()
.bigPicture(image).setSummaryText(description));
}
android.app.Notification notification = notificationBuilder.build();
notificationManager.notify(id, notification);
我已经看到几乎所有关于堆栈溢出的解决方案,它表明此问题与自定义布局有关。但我没有使用自定义布局。我无法理解究竟是什么问题。有人可以帮忙吗?
答案 0 :(得分:2)
我在.webp
中使用通知图标时遇到了同样的问题
请确保在.png
中使用带有KitKat及以下设备的图标。
答案 1 :(得分:0)
尝试更改
int color = ContextCompat.getColor(this, R.color.notif_background);
阅读这个答案:https://stackoverflow.com/a/26024747/3994630
或者更改设置图标的顺序,阅读: https://stackoverflow.com/a/40259328/3994630
可能是问题,我希望它可以帮助你
答案 2 :(得分:0)
您与样式发生冲突 - 标题有时可能为null,因此NotificationCompat.BigTextStyle()将应用bigText设置,之后如果image不为null,将应用NotificationCompat.BigPictureStyle()。问题是,将设置bigText,但样式将不相关。
答案 3 :(得分:0)
对我来说这项工作:
RemoteViews remoteViews = new RemoteViews(getApplicationContext().getPackageName(), R.layout.toolbar_custom_layout);
NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
.setContent(remoteViews)
.setContentTitle("example example")
.setSmallIcon(R.drawable.app_icon_example)
.setStyle(new NotificationCompat.DecoratedCustomViewStyle())
.setContentInfo("content example");
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(0, builder.build());
还将RelativeLayout设置为通知布局中的主要父级。在我的情况下,我将ConstraintLayout作为父级,当我将其更改为RelativeLayout时,everythig开始工作。 我希望它会有所帮助。
答案 4 :(得分:0)
这也发生在应用更新之间。与this problem非常相似。
来自this answer的可能解释:
在获取整数引用和待处理意图之间 关闭,应用程序已更新,所有可绘制的引用都已更改。 用于引用现在引用的正确drawable的整数 不正确的可绘制或根本没有(完全没有 - 导致 这次崩溃)
答案 5 :(得分:0)
当您在.setSmallIcon(R.drawable.ic_notification)中使用Vector时,将发生此崩溃。我正在使用带有渐变项目的矢量图像。我删除了渐变部分。它在5.0(棒棒糖),6.0(棉花糖)通知上开始正常工作