android-从多个通知启动活动会覆盖先前的意图
作者:互联网
public static void showNotification(Context ctx, int value1, String title, String message, int value2){
NotificationManager notificationManager = (NotificationManager) ctx.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(ctx, ActivityMain.class);
int not_id = Utils.randInt(1111, 9999);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
notificationIntent.putExtra("key_1", value1);
notificationIntent.putExtra("key_2", value2);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctx.getApplicationContext());
stackBuilder.addNextIntent(notificationIntent);
PendingIntent notifPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
notificationManager.notify(not_id, createNotification(ctx, notifPendingIntent, title, message));
}
这是我发送和显示通知的代码.我通过服务发送.如您所见,我有两个意图发送额外的值(key_1和key_2);单击通知时,我应该打开活动并查看键的value1和value2.
问题是:如果在我打开任何一个通知之前到达另一个通知,则将覆盖value1和value2.例如:
>第一个通知发送foo和bar
>第二个通知发送faz和baz
>第三次通知发送fubar和fobaz
因此,我将在栏中收到3条通知.现在,无论我单击什么通知,第一,第二,第三,我都会看到最后一个fubar和fobaz发送的值.
我想要的是,当我单击特定通知时,活动将显示该通知发送的值.
任何帮助将不胜感激.谢谢.
.
解决方法:
这是因为您使用的是FLAG_UPDATE_CURRENT:
Flag indicating that if the described PendingIntent already exists, then keep it but replace its extra data with what is in this new Intent.
这就是用最后一个意图中的数据替换您的多余数据的方法.
而是在此处为PendingIntent的默认行为传递0:
PendingIntent notifPendingIntent = stackBuilder.getPendingIntent(0, 0);
标签:android-intent,notifications,android-pendingintent,android 来源: https://codeday.me/bug/20191120/2044939.html