我想将通知分组为摘要。
我通过为所有通知使用一个 ID 来实现这一点。这样 android 就不会创建新的通知,而是更新现有的通知(减少代码):
Notification summaryNotification = new NotificationCompat.Builder(this)
.setGroupSummary(true)
.setDefaults(Notification.DEFAULT_ALL)
.setStyle(new NotificationCompat.InboxStyle()
.addLine(msg)
.setBigContentTitle("My App")
.setSummaryText("FooBar"))
.build();
mNotificationManager.notify(uuid, summaryNotification);
UUID 始终相同,因此应更新通知。然而当新的通知到来时,setStyle
似乎被覆盖了。
这导致老addLine(msg)
消失。但是,我希望在没有某种通知管理器服务器端的情况下添加新消息。
有什么想法或建议吗?
我认为您误解了通知生成器。
NotificationCompat.Builder 构建complete通知,包含所有内容。
重用相同的 id 只是告诉通知管理器将具有相同 id 的现有通知替换为新通知:(Source)
[...]更新或创建一个NotificationCompat.Builder对象,从中构建一个Notification对象,并使用您之前使用的相同ID发出Notification。如果之前的通知仍然可见,系统会更新它来自Notification对象的内容.
Thus addLine
不是对现有通知执行的操作,而是对您创建的新构建器(当时为空)执行的操作。
如果您想使用收件箱样式向现有通知添加一行,您将需要
- 保留原始构建器对象,根据需要添加行并使用相同的 id 重新发送通知
- 创建一个新的构建器并首先添加旧行,然后添加新行。您将需要从某处存储或检索旧行(取决于您的应用程序)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)