jagmohan
jagmohan

Reputation: 2052

Android Alarm Clock - Remove alarms programmatically

I am writing an application in which user can configure alerts/alarms. At this point, I have everything working expect the one. I am firing off an alarm using

Intent alarmIntent = new Intent(AlarmClock.ACTION_SET_ALARM);
alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
alarmIntent.putExtra(AlarmClock.EXTRA_MESSAGE, "Some message!");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MINUTE, 1);
alarmIntent.putExtra(AlarmClock.EXTRA_HOUR, calendar.get(Calendar.HOUR_OF_DAY));
alarmIntent.putExtra(AlarmClock.EXTRA_MINUTES, calendar.get(Calendar.MINUTE));
alarmIntent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
context.startActivity(alarmIntent);

I want to remove this alarm once user has dismissed using the Dismiss button. I can see the alarms being still there in the alarm clock which I set using above code through my application.

Is there some way to get a cursor or something similar on the alarms being there in the alarm clock? This will help me iterate over them and remove the ones I want.

Any help would be appreciated, Thanks in advance.

Upvotes: 4

Views: 9037

Answers (2)

Chupik
Chupik

Reputation: 1050

As it was answered here: there is no supported API to this.

Official documentation says that

If a time of day is specified, and EXTRA_SKIP_UI is true, and the alarm is not repeating, the implementation should remove this alarm after it has been dismissed.

But different manufactures implement their own alarm clocks and I'm not sure if someone supporrts this. I have tried it on JB emulator and looks like it dosen't work. Maybe, on KitKat? Only this one is ok on JB:

If an identical alarm exists matching all parameters, the implementation may re-use it instead of creating a new one

So, maybe, better solution is to use youre own alarm, created with AlarmManager or warn user that he has to remove Alarms by hands (to make it more obvious - not use AlarmClock.EXTRA_SKIP_UI).

Upvotes: 2

Sagar Maiyad
Sagar Maiyad

Reputation: 12733

call method cancel(...) from AlarmManager, using the same PendingIntent you used to set the alarm. Example:

mAlarmPendingIntent = PendingIntent.getActivity(this, requestCode, intent, flags);

this.getAlarmManager().cancel(mAlarmPendingIntent);

this refers to the Activity or the Service from which you are cancelling the alarm

Upvotes: 1

Related Questions