2012-02-22 3 views
0

Я настраиваю будильник в разное время. Я хочу удалить особый сигнал. Пример. Я установил 100 аварийных сигналов в разное время, теперь хочу удалить будильник, установленный 25 февраля 2012 года 10.45. Как мне это сделать.отменить определенный сигнал тревоги

Я написал следующий код, чтобы установить будильник.

 final AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
     GregorianCalendar gc=new GregorianCalendar(); 
     gc.set(2012, 1, 22, 10, 42,0); 

     Intent intent = new Intent(this, AlarmService.class); 
     gc.set(Calendar.AM_PM,0); 

     final PendingIntent sender = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     am.set(AlarmManager.RTC_WAKEUP, gc.getTimeInMillis(), sender); 

У меня есть приемник вещания для получения тревоги.

+0

Вы искали Stackoverflow, на это был дан ответ раньше? – st0le

ответ

4

Вам необходимо сохранить код запроса тревоги, то есть 1 в вашем случае здесь. Второй параметр, который вы передаете в свой метод PendingIntent.getBroadcast(), - это ваш код запроса для определенного сигнала тревоги. Поэтому, когда вы сохраняете код запроса вместе со временем для того, что вы устанавливаете, вам будет легко получить конкретный экземпляр тревоги и после этого вы можете отменить его с помощью:

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE); 
Intent intent = new Intent(context, OneShotAlarm.class); //OneShotAlarm is the broadcast receiver you use for alarm  
PendingIntent sender = PendingIntent.getBroadcast(context,alarm_request_code, intent, 0); 
am.cancel(sender); 

вы должны позаботиться о том, что каждый из кода запроса для различных аварийных сигналов должен быть уникальным, иначе ваша тревога будет перенесены с новым временем вы установили со старым кодом запроса.

Упование вы получаете пункт.

+0

@kamlesh: см. Мой отредактированный ответ. – Hiral

+0

si Мне нужно хранить что-то вроде alarmId (RequestCode) в моей базе данных –

+0

Да ... просто создайте таблицу с двумя столбцами: alarmid и time.Then сохраните каждую тревогу вместе со своим временем в нее. Затем переходите через таблицу в найдите будильник для определенного времени. Это даст вам идентификатор, затем вы можете использовать его для отмены тревоги. – Hiral

0

Возможно, вам потребуется сохранить его в некоторой форме структуры данных, чтобы отслеживать время и объект. При этом я не пытался хранить объекты AlarmManager раньше.

Смежные вопросы