Как определить, было ли отклонено уведомление?

Есть ли способ в Android обнаружить, когда пользователь просматривает уведомление слева и удаляет его? Я использую alarmmanager, чтобы установить повторяющееся оповещение, и мне нужно мое повторное оповещение, чтобы остановить, когда уведомление отменено пользователем. Вот мой код:

Установка повторного оповещения:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), repeatFrequency, displayIntent); 

Мой код уведомления:

 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Get the notification ID. int notifID = getIntent().getExtras().getInt("Reminder_Primary_Key"); //Get the name of the reminder. String reminderName = getIntent().getExtras().getString("Reminder_Name"); //PendingIntent stores the Activity that should be launched when the user taps the notification. Intent i = new Intent(this, ViewLocalRemindersDetail.class); i.putExtra("NotifID", notifID); i.putExtra("notification_tap", true); //Add FLAG_ACTIVITY_NEW_TASK to stop the intent from being launched when the notification is triggered. PendingIntent displayIntent = PendingIntent.getActivity(this, notifID, i, Intent.FLAG_ACTIVITY_NEW_TASK); NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); Notification notif = new Notification(R.drawable.flag_red_large, reminderName, System.currentTimeMillis()); CharSequence from = "Here's your reminder:"; CharSequence message = reminderName; notif.setLatestEventInfo(this, from, message, displayIntent); //Pause for 100ms, vibrate for 250ms, pause for 100ms, and vibrate for 500ms. notif.defaults |= Notification.DEFAULT_SOUND; notif.vibrate = new long[] { 100, 250, 100, 500 }; nm.notify(notifID, notif); //Destroy the activity/notification. finish(); } 

Я знаю, что мне нужно вызвать alarmManager.cancel(displayIntent) , чтобы отменить мой повторяющийся сигнал. Однако я не понимаю, куда поместить этот код. Мне нужно отменить повторное оповещение ТОЛЬКО, когда пользователь нажал на уведомление или отклонил его. Спасибо за вашу помощь!

Я считаю, что Notification.deleteIntent – это то, что вы ищете. Док говорит:

Намерение выполнить, когда уведомление явно отклонено пользователем, либо с помощью кнопки «Очистить все», либо путем индивидуальной отладки. Вероятно, это не должно запускаться, так как некоторые из них будут отправлены одновременно.