新通知取消旧通知

the new notification cancel the old one

在我的应用程序中,用户必须添加多个通知,但我的问题是当用户添加新通知时旧通知被删除或取消。我认为它来自 pendingIntent,我应该使用什么适当的标志?

这是我的一些代码:

Calendar calendar = Calendar.getInstance();
    Intent intent;
    PendingIntent pendingIntent;
    AlarmManager alarmManager;
    long futureInMillis;
    switch (type) {
        case SCHEDULE_BY_DAYS:
            intent = new Intent(this, NotificationReceiver.class);
            intent.putExtra(NotificationReceiver.NOTIFICATION_ID, 1);
            intent.putExtra(NotificationReceiver.NOTIFICATION, getNotification("WAKEP UP days !!"));
            pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
            break;
        case SCHEDULE_BY_HOURS:

            futureInMillis = SystemClock.elapsedRealtime() + (value * 600000);
            intent = new Intent(this, NotificationReceiver.class);
            intent.putExtra(NotificationReceiver.NOTIFICATION_ID, 1);
            intent.putExtra(NotificationReceiver.NOTIFICATION, getNotification("WAKEP UP hours"));
            pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

            alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, futureInMillis, pendingIntent);
            break;

如果您为每个 PendingIntent 通知指定不同的 requestCode,则不会相互取消。

PendingIntent.getBroadcast(this, unique_code, intent, PendingIntent.FLAG_UPDATE_CURRENT);

编辑

int uniqueCode = sharedPreferences.getInt("unique_code",0) + 1;
sharedPreferences.edit().putInt("unique_code",uniqueCode).apply()

您需要在您的应用 build.gradle 文件中添加如下所示的依赖项:

Java:实施“androidx.preference:首选项:1.1.1”

Kotlin:实现“androidx.preference:preference-ktx:1.1.1”

然后在你的片段中做这样的事情。如果您在 activity.

中,则不需要 requireActivity()
`
 val sharedPreferences = requireActivity().getSharedPreferences("Notification_data", Context.MODE_PRIVATE)
    val customRequestCode = sharedPreferences.getInt("customRequestCode", 0) + 1
    sharedPreferences.edit().putInt("customRequestCode", customRequestCode).apply()
`