Android 另一个通知将覆盖通知挂起内容意图附加项

Android 另一个通知将覆盖通知挂起内容意图附加项,android,android-intent,notifications,android-pendingintent,Android,Android Intent,Notifications,Android Pendingintent,创建具有新PendingEvent的新通知时,其意图中的附加将覆盖任何以前通知的PendingEvent意图附加 例如,假设我创建了带有PendingTent1的Notification1,它有Intent1及其附加项 当我用PendingTent2创建Notification2时,Intent2有自己的不同的附加值,Intent1现在将有与Intent2相同的附加值。为什么会这样?如何解决此问题?有两种方法可以解决此问题: 一是对意图设定不同的行动。因此,在您的示例中,可以设置Intent1.

创建具有新PendingEvent的新通知时,其意图中的附加将覆盖任何以前通知的PendingEvent意图附加

例如,假设我创建了带有PendingTent1的Notification1,它有Intent1及其附加项


当我用PendingTent2创建Notification2时,Intent2有自己的不同的附加值,Intent1现在将有与Intent2相同的附加值。为什么会这样?如何解决此问题?

有两种方法可以解决此问题:

一是对意图设定不同的行动。因此,在您的示例中,可以设置
Intent1.setAction(“Intent1”)
Intent2.setAction(“Intent2”)
。由于动作不同,Android不会覆盖意图上的额外功能

然而,在某些情况下,您可能实际需要为此目的设置特定操作(即,您的操作对应于特定的广播接收器)。在这种情况下,最好将请求代码设置为每个PendingEvent中不同的代码:

PendingIntent pendingIntent1 = PendingIntent.getActivity(context,
    (int) System.currentTimeMillis() /* requestCode */, intent1, 
    PendingIntent.FLAG_UPDATE_CURRENT);

PendingIntent pendingIntent2 = PendingIntent.getActivity(context,
    (int) System.currentTimeMillis() /* requestCode */, intent2, 
    PendingIntent.FLAG_UPDATE_CURRENT);

通过在PendingEvent上设置一个新的请求代码,Android将不会覆盖其相应意图上的额外内容。

在我的情况下,它通过每次使用唯一的通知id来工作,如下所示:

mNotificationManager.notify((int) System.currentTimeMillis(), mBuilder.build());

使用
(int)System.currentTimeMillis()
生成每个通知的唯一id,并将其交给
NotificationManager
对象。

Android对这两个通知使用相同的
PendingEvent
,这就是为什么
Intent1
Intent2
具有相同的额外功能。创建
pendingent
时,您需要确保它们是唯一的,这样就不会重复使用相同的
pendingent
。有几种方法可以使它们唯一(不同的操作、不同的数据、不同的请求代码),不幸的是,仅仅有不同的附加并不能使它们唯一。默认情况下(如果在发送通知之前没有传递任何标志),intent2附加会被intent1打败。你救了我一天。这个答案必须得到批准!为什么不接受这一点?你也救了我一天,谢谢你!!这只会防止通知相互覆盖(以便应用程序可以同时显示多个通知),但不会阻止挂起的意图的额外内容。但也可以将相同的想法应用于挂起的意图请求代码