超过一个通知的待处理意图

3

我有一个应用程序可以发送通知,我使用了以下代码来创建待定意图:

  Intent myIntent = new Intent(getApplicationContext(),MainActivity.class);
  myIntent.putExtra("link",Link);

  PendingIntent intent2 =  
  PendingIntent.getActivity(getApplicationContext(),1,myIntent, 
  PendingIntent.FLAG_ONE_SHOT);

一开始这段代码运行得很好,但我将其放在一个每1分钟调用一次的方法中。

问题是link变量会不断地改变。

当我在MainActivity中获取数据时,我只能得到最后一个链接,所有创建的通知都指向最后一个链接。

我不知道如何避免这种情况发生。

3个回答

10

您正在为待处理的意图发送相同的请求代码。这些代码被定义为您的PendingIntent声明的第二个参数。

请更改:

PendingIntent intent2 =  
  PendingIntent.getActivity(getApplicationContext(),1,myIntent, 
  PendingIntent.FLAG_ONE_SHOT);

致:

PendingIntent intent2 =  
  PendingIntent.getActivity(getApplicationContext(),UNIQUE_INT_VALUE_FOR_EVERY_CALL,myIntent, 
  PendingIntent.FLAG_ONE_SHOT);

如果您使用相同的ID,那么意图将被重复使用,并且您只会收到最后一次数据,而不是为每个调用获取新数据。


非常高兴能够帮忙。 :) - Kapil G

0
在 Kotlin 中
创建一个通知
val builder = NotificationCompat.Builder(context, CHANNEL_ID)

对于一个或多个,只需更改请求代码编号:

    val pendingIntent = PendingIntent.getActivity(context,
System.currentTimeMillis().toInt(),intent, 0)

那么

builder.setContentIntent(pendingIntent)

0

试一下这个,

  PendingIntent contentIntent = PendingIntent.getActivity(GCMNotificationIntentService.this, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接