Android 如何将多个通知正确地堆叠在一起? 背景
假设我有一些导致显示新通知的事件 与显示一个全新的通知(使用不同的ID)不同,建议将它们堆叠在一起,就像编写的那样,这样实际上就可以替换上一个通知 堆叠通知的示例: 作为一个例子(这只是一个例子,所以请不要固执己见),让我们以Gmail为例。如果您收到电子邮件,将显示通知。如果用户现在单击它,它将直接转到消息本身。但是,如果有更多的电子邮件到达,通知将替换为一个堆叠的通知,单击该通知后将进入“电子邮件列表”活动。不仅如此,通知还显示了新电子邮件的数量 问题 一旦显示通知,您就无法控制其中显示的内容。你只是更换了它,你不知道它以前是什么 出现的问题是,您希望将多个通知堆叠到一个通知中,但仍然显示有关以前通知的一些信息 此外,根据文档,只有在用户明确拒绝通知时才使用“”功能: 在清除通知时提供要发送的挂起内容 由用户显式地执行 问题 当您将以前的通知数据替换为新的通知时,是否可以获取其数据 管理通知的建议方法是什么,以便单个通知具有特定类型和数据的意图(单击时),而堆叠的通知具有不同的意图Android 如何将多个通知正确地堆叠在一起? 背景,android,notifications,Android,Notifications,假设我有一些导致显示新通知的事件 与显示一个全新的通知(使用不同的ID)不同,建议将它们堆叠在一起,就像编写的那样,这样实际上就可以替换上一个通知 堆叠通知的示例: 作为一个例子(这只是一个例子,所以请不要固执己见),让我们以Gmail为例。如果您收到电子邮件,将显示通知。如果用户现在单击它,它将直接转到消息本身。但是,如果有更多的电子邮件到达,通知将替换为一个堆叠的通知,单击该通知后将进入“电子邮件列表”活动。不仅如此,通知还显示了新电子邮件的数量 问题 一旦显示通知,您就无法控制其中显示的
使用堆叠通知的应用程序是否真的管理其背后的数据库,并以某种方式监控其状态?您可以访问可见的通知 如第段所述,您可以使用相同的通知id访问应用程序创建的可见通知
mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated
int notifyID = 1;
mNotifyBuilder = new NotificationCompat.Builder(this)
.setContentTitle("New Message")
.setContentText("You've received new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
numMessages = 0;
// Start of a loop that processes data and then notifies the user
...
mNotifyBuilder.setContentText(currentText)
.setNumber(++numMessages);
// Because the ID remains unchanged, the existing notification is
// updated.
mNotificationManager.notify(
notifyID,
mNotifyBuilder.build());
...
我还建议将有关未读通知的信息保存在本地Sqlite数据库中,并在读取后将其删除。您可以访问可见的通知 如第段所述,您可以使用相同的通知id访问应用程序创建的可见通知
mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// Sets an ID for the notification, so it can be updated
int notifyID = 1;
mNotifyBuilder = new NotificationCompat.Builder(this)
.setContentTitle("New Message")
.setContentText("You've received new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
numMessages = 0;
// Start of a loop that processes data and then notifies the user
...
mNotifyBuilder.setContentText(currentText)
.setNumber(++numMessages);
// Because the ID remains unchanged, the existing notification is
// updated.
mNotificationManager.notify(
notifyID,
mNotifyBuilder.build());
...
我还建议将有关未读通知的信息保存在本地Sqlite数据库中,并在读取后将其删除。这段代码使您能够查看收到的所有通知,并仅在取消通知时才取消特定通知
Random random = new Random();
int m = random.nextInt(9999 - 1000) + 1000;
Notification n = builder.getNotification();
n.defaults |= Notification.DEFAULT_ALL;
nm.notify(m, n);
这段代码使您能够查看收到的所有通知,并且仅当您取消某个通知时才取消该通知
Random random = new Random();
int m = random.nextInt(9999 - 1000) + 1000;
Notification n = builder.getNotification();
n.defaults |= Notification.DEFAULT_ALL;
nm.notify(m, n);
您可以隐藏通知,也可以显示通知,仅此而已。通知托管在另一个进程中,这就是为什么。您可以隐藏通知,也可以显示通知,仅此而已。通知托管在另一个进程中,这就是为什么。当您的通知只是被取消时,系统不会传递其意图。最终从数据库中清除它们是很好的。您在代码中显示的是设置一个新通知。如何获取上一个通知的数据以将其堆叠到新的通知中?您必须将未读通知的数据保存在某个位置,例如数据库中。当用户点击通知时,您必须清除所有记录。当您的通知只是取消时,系统不会传递其意图。最终从数据库中清除它们是很好的。您在代码中显示的是设置一个新通知。如何获取上一个通知的数据以将其堆叠到新的通知中?必须将有关未读通知的数据保存在某个位置,例如数据库中。当用户点击通知时,必须清除所有记录。