Cancel all alarms set with the alarm

I want to cancel all the installed signals ... I searched a lot and did a lot, but nothing worked ... When I set the alarm, say after 2 minutes, and then canceled it, it will still light after 2 minutes .. ... Any help would be appreciated.

Alarm creation method:

Intent intent = new Intent(c, AlarmReceiver.class);
    intent.putExtra("task", task);
    intent.putExtra("id", id);
    PendingIntent pendingIntent = PendingIntent.getActivity(c, code, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager am = (AlarmManager)c.getSystemService(Context.ALARM_SERVICE);
    am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

Cancel alarm:

    Intent intent = new Intent(c, AlarmReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(c, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager am = (AlarmManager)c.getSystemService(Context.ALARM_SERVICE);
    am.cancel(pendingIntent);
+4
source share
4 answers

When you plan your alarms, your second parameter getActivity()is equal code.

When you try to cancel your alarms, your second parameter getActivity()is equal 0. This will lead to the successful cancellation of the alarm for which it codewas 0.

, PendingIntents, , , getActivity() .

+3

( getActivity) code, , 0. code 0, .

, requestCode ( ) PendingIntent.getActivity

. , ,

for (int requestCode = 1; requestCode <= 3; requestCode++) {
            PendingIntent pendingIntent = PendingIntent.getActivity(c, requestCode, intent,PendingIntent.FLAG_CANCEL_CURRENT);
           AlarmManager am = (AlarmManager)c.getSystemService(Context.ALARM_SERVICE);
           am.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
        }

requestCode ( ), .

, ,

  • "" Intent ( ). .
  • "" Intent ( ). .
  • "" () Intent ( ). .
  • "" / "" Intent ( ). . "package" "component" "" Intent s.
  • "" Intent . .

. .

+1

, , .

2

intent.putExtra( "", );

intent.putExtra( "id", id);

,

Intent intent = new Intent(c, AlarmReceiver.class);
intent.putExtra("task", task);
intent.putExtra("id", id);
PendingIntent pendingIntent = PendingIntent.getActivity(c, code, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = (AlarmManager)c.getSystemService(Context.ALARM_SERVICE);
am.cancel(pendingIntent);
0

To cancel the alarm, you do not need to recreate the same PendingIntent and pass the same request code.

You can see my solution here.

0
source

Source: https://habr.com/ru/post/1568887/


All Articles