从多个通知中启动 activity 会覆盖之前的意图
Launch activity from multiple notifications overrides the previous intent
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));
}
这是我发送和显示 notification
的代码。我从服务发送这个。如您所见,我发送了 2 个额外的值(key_1
和 key_2
);当我单击通知时,我应该打开 activity 并看到键的 value1
和 value2
。
问题是:如果在我打开任何通知之前收到另一个通知,value1
和 value2
将被覆盖。例如:
第一个通知发送 foo
和 bar
第二次通知发送faz
和baz
第三次通知发送fubar
和fobaz
所以我将在栏中收到 3 个通知。现在,无论我点击什么通知,第一、第二、第三,我都会看到最后一个 fubar
和 fobaz
发送的值。
我想要的是当我单击特定通知时,activity 显示该通知发送的值。
我们将不胜感激任何帮助。谢谢。
。
这是因为您正在使用 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.
这就是将您的 extra
数据替换为上次意图的数据。
而是在此处为 PendingIntent 的默认行为传递 0:
PendingIntent notifPendingIntent = stackBuilder.getPendingIntent(0, 0);
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));
}
这是我发送和显示 notification
的代码。我从服务发送这个。如您所见,我发送了 2 个额外的值(key_1
和 key_2
);当我单击通知时,我应该打开 activity 并看到键的 value1
和 value2
。
问题是:如果在我打开任何通知之前收到另一个通知,value1
和 value2
将被覆盖。例如:
第一个通知发送
foo
和bar
第二次通知发送
faz
和baz
第三次通知发送
fubar
和fobaz
所以我将在栏中收到 3 个通知。现在,无论我点击什么通知,第一、第二、第三,我都会看到最后一个 fubar
和 fobaz
发送的值。
我想要的是当我单击特定通知时,activity 显示该通知发送的值。
我们将不胜感激任何帮助。谢谢。
。
这是因为您正在使用 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.
这就是将您的 extra
数据替换为上次意图的数据。
而是在此处为 PendingIntent 的默认行为传递 0:
PendingIntent notifPendingIntent = stackBuilder.getPendingIntent(0, 0);