其他分享
首页 > 其他分享> > android-从多个通知启动活动会覆盖先前的意图

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