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
Post a Comment