Android旧通知被新通知无效

Android旧通知被新通知无效,android,notifications,android-pendingintent,Android,Notifications,Android Pendingintent,我正在开发一个Android应用程序。它接收通知a,并在用户单击通知时显示内容(与a相关)。问题是:如果用户在收到多个通知时单击其中一个旧通知,它会显示与最新通知相关的内容,而不是它本身。例如,在我收到A、B、C、D(A是最新的)通知后,如果我单击通知A,它将显示内容A,但如果我单击B(或C或D),它仍然显示内容A 我用来推送通知的代码如下: Intent Intent=newintent(这个,MainActivity.class);//开始主要活动 intent.setFlags(inten

我正在开发一个Android应用程序。它接收通知a,并在用户单击通知时显示内容(与a相关)。问题是:如果用户在收到多个通知时单击其中一个旧通知,它会显示与最新通知相关的内容,而不是它本身。例如,在我收到A、B、C、D(A是最新的)通知后,如果我单击通知A,它将显示内容A,但如果我单击B(或C或D),它仍然显示内容A

我用来推送通知的代码如下:
Intent Intent=newintent(这个,MainActivity.class);//开始主要活动
intent.setFlags(intent.FLAG_ACTIVITY_CLEAR_TASK | intent.FLAG_ACTIVITY_CLEAR_TOP | intent.FLAG_ACTIVITY_NEW_TASK);
意图.额外(MainActivity.EXTRA_TITLE,TITLE);
intent.putExtra(MainActivity.EXTRA_URL,URL);
pendingent pi=pendingent.getActivity(this,0,intent,pendingent.FLAG_UPDATE_CURRENT);
通知通知=新建通知.Builder(此)
.setWhen(System.currentTimeMillis())
.setTicker(标题)
.setContentTitle(标题)
.setContentText(beacon.getDetail())
.setAutoCancel(真)
.setContinuous(false)//如果为true,则用户不能将其取消
.setSmallIcon(R.drawable.ic_启动器)
.setonlylertonce(真)
.setDefaults(通知.DEFAULT\u全部)
.设置灯(0xff00ff00、1000、300)
.setSound(Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_Uri,“6”))
.设置振动(新长[]{
0, 100, 200, 300
})
//.addAction(0,“取消”,驳回)
//.addAction(0,“打开应用程序”,pi)
.build();
notification.contentIntent=pi;

notificationManager.notify(id,通知)尝试此操作,它将替换旧的通知

notificationManager.notify(id, notification); <---make id the same integer for all notifications
notificationManager.notify(id,notification) 发件人:

知道两个意图何时被认为是相同的是很重要的 用于检索挂起的帐篷。人们常犯的错误 make是创建多个PendingEvent对象,其意图是 只在“额外”内容上有所不同,期望得到不同的结果 每次都挂着帐篷。这种情况不会发生。意图的部分 用于匹配的是由定义的相同的 Intent.filterEquals。如果使用两个等效的意图对象 根据Intent.filterEquals,您将获得相同的悬挂式帐篷 为了他们两个

有两种典型的处理方法

如果确实需要多个不同的PendingEvent对象同时处于活动状态 同时(例如用作两个同时显示的通知) 同时),那么您需要确保 把他们和不同的人联系起来是不同的 悬挂式帐篷。这可能是所考虑的任何意图属性 Intent.filterEquals或提供给的不同请求代码整数 getActivity(Context,int,Intent,int),getActivities(Context,int, Intent[],int),getBroadcast(上下文,int,Intent,int),或 getService(Context,int,Intent,int)


谢谢你的回答。如果通知的ID相同,则旧通知将替换为新通知,并且只显示一个通知。我想要的是同时显示多个通知。所以用户可以选择旧的通知。谢谢您的回答。你解决了我的问题。受悬而未决的文档的启发,我为我的问题添加了一个有效的答案。