android - How to cancel an AlarmManager -


i have setup alarmmanager follows:

    intent intent = new intent(topactivity.this, recordactivity.class);     intent.setflags(intent.flag_activity_single_top);     intent.putextra(utils.key_record_time, recordlength);     intent.putextra(utils.key_rec_start_time, start);      savetimeandlength(start, recordlength);      pendingintent pintent = pendingintent.getactivity(topactivity.this, 0, intent, 0);     alarmmanager alarm = (alarmmanager)getsystemservice(context.alarm_service);     alarm.set(alarmmanager.rtc_wakeup, cal.gettimeinmillis(), pintent); 

the following supposed cancel it, fail. missing?

 alarmmanager alarmmanager = (alarmmanager)getsystemservice(context.alarm_service); intent intent = new intent(topactivity.this, recordactivity.class); intent.setflags(intent.flag_activity_single_top); intent.putextra(utils.key_record_time, start); intent.putextra(utils.key_rec_start_time, recordlength);  pendingintent pintent = pendingintent.getactivity(topactivity.this, 0, intent, 0); try {     alarmmanager.cancel(pintent);     log.e(tag, "cancelling pending intents"); } catch (exception e) {     log.e(tag, "alarmmanager update not canceled. " + e.tostring()); } 

i have read lots of answers on stackoverflow still not figure out what's problem.
in advance!

for alarmmanager cancel event, needs compare 2 intents.

this achieved through filterequals (intent other) method says

determine if 2 intents same purposes of intent resolution (filtering). is, if action, data, type, class, , categories same. not compare data included in intents.

i not sure why not matches when class same.

i had same problem, overcome have set data also.

see if helps u.

edited

while setting alarm

    intent intent = new intent(topactivity.this, recordactivity.class);     intent.setflags(intent.flag_activity_single_top);     intent.putextra(utils.key_record_time, recordlength);     intent.putextra(utils.key_rec_start_time, start);     intent.setdata(uri.fromparts("yourappscheme", "alarm", null));      savetimeandlength(start, recordlength);      pendingintent pintent = pendingintent.getactivity(topactivity.this, 0, intent, 0);     alarmmanager alarm = (alarmmanager)getsystemservice(context.alarm_service);     alarm.set(alarmmanager.rtc_wakeup, cal.gettimeinmillis(), pintent); 

and when need cancel

alarmmanager alarmmanager = (alarmmanager)getsystemservice(context.alarm_service); intent intent = new intent(topactivity.this, recordactivity.class); intent.setflags(intent.flag_activity_single_top); intent.putextra(utils.key_record_time, start); intent.putextra(utils.key_rec_start_time, recordlength); intent.setdata(uri.fromparts("yourappscheme", "alarm", null));   pendingintent pintent = pendingintent.getactivity(topactivity.this, 0, intent, 0); try {     alarmmanager.cancel(pintent);     log.e(tag, "cancelling pending intents"); } catch (exception e) {     log.e(tag, "alarmmanager update not canceled. " + e.tostring()); } 

Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -