我有一个问题,找不到答案。我尝试了AndroidDeveloper教程,在stackoverflow和谷歌上搜索,但是要么我的搜索技巧很糟糕,要么没有答案解决我的问题。
当有多个新消息时,我想将消息通知堆叠在一个通知中。我可以为每个消息显示一个通知,但我无法创建一条堆叠/汇总通知。
最好的结果是这样的:http://developer.android.com/images/android-5.0/notifications/Summarise_Dont.png 我想要的是这样的:http://developer.android.com/images/android-5.0/notifications/Summarise_Do.png 我正在使用API 19,不需要向后兼容。在AndroidStudio中编写代码并在Genymotion中进行测试。
我尝试使用NotificationCompatManager,结果是多个通知:
当有多个新消息时,我想将消息通知堆叠在一个通知中。我可以为每个消息显示一个通知,但我无法创建一条堆叠/汇总通知。
最好的结果是这样的:http://developer.android.com/images/android-5.0/notifications/Summarise_Dont.png 我想要的是这样的:http://developer.android.com/images/android-5.0/notifications/Summarise_Do.png 我正在使用API 19,不需要向后兼容。在AndroidStudio中编写代码并在Genymotion中进行测试。
我尝试使用NotificationCompatManager,结果是多个通知:
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
我还尝试使用NotificationManager,结果也是多个通知:
NotificationManager notificationManager=(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
我的通知如下:
Notification notification = new NotificationCompat.Builder(this)
.setContentTitle( "New message from... ")
.setContentText("Message:...")
.setSmallIcon(R.drawable.icon)
.setContentIntent(pIntent)
.setSound(RingtoneManager.getDefaultUri(TYPE_NOTIFICATION))
.setGroup(mNoti)
.setGroupSummary(true)
.setAutoCancel(true)
.build();
我这样触发通知:notificationManager.notify(counter, notification);
计数器会为每个通知递增,因此每个通知都有自己的ID。
我也尝试过使用这种形式构建和触发通知,但没有成功:
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle("message from...")
.setContentText("message...")
.setContentIntent(pIntent)
.setAutoCancel(true)
.setGroup(mNoti)
.setGroupSummary(true)
.setSound(RingtoneManager.getDefaultUri(TYPE_NOTIFICATION));
notificationManager.notify(counter, notificationBuilder.build());
setGroup 显然对我没有作用。我不明白为什么它不起作用或者我应该如何使其工作。
我的组看起来像这样:
final static String mNoti = "mNoti";
唯一与我想要的接近的方法是为所有通知使用相同的ID,以便新通知覆盖旧通知,并在构建通知时使用setNumber(int)。但是这并不能真正给我想要的结果,因为我不认为我可以获得用户未处理的通知数量。或者我可以吗?
有人能帮我达到我的目标吗?
manager.cancelAll(); // Is this really needed?
吗?这是关闭旧通知只留下摘要的“诀窍”。 - Pphoenix