2014-10-07 4 views
0

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

В BroadcastReceiver я использую следующий код для расписания.

Intent localIntent = new Intent("com.test.sample"); 

     PendingIntent pi = PendingIntent.getBroadcast(context, 0, 
        localIntent, 0); 
      alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, 
        SystemClock.elapsedRealtime() + (5 * 60 * 1000), 
        pi); 

Здесь контекст происходит от OnReceive метода приемника.

Я хочу отменить этот сигнал тревоги при получении другой трансляции. Я знаю, что тревога может быть отменена alarmManager.cancel(pi);

Однако если alarmanager была установлена ​​с какой-либо другой деятельности, как заполучить PendingIntent, чтобы отменить его?

Благодаря

+1

только что создайте новый PendingIntent – pskink

ответ

8

Вам нужно создать новый PendingIntent с тем же id затем передать его в качестве аргумента в cancelAlarm() метод, как следует:

Для создания сигнала тревоги

int alarmId = 0; /* Dynamically assign alarm ids for multiple alarms */ 
Intent intent = new Intent(context, AlarmReceiver.class); /* your Intent localIntent = new Intent("com.test.sample");*/ 
intent.putExtra("alarmId", alarmId); /* So we can catch the id on BroadcastReceiver */ 
PendingIntent alarmIntent; 
alarmIntent = PendingIntent.getBroadcast(context, 
     alarmId, intent, 
     PendingIntent.FLAG_CANCEL_CURRENT); 

Чтобы отменить сигнал тревоги (в BroadcastReceiver whitin onReceive(Context context, Intent intent) способ)

int alarmId = intent.getExtras().getInt("alarmId"); 
PendingIntent alarmIntent; 
alarmIntent = PendingIntent.getBroadcast(this, alarmId, 
     new Intent(this, AlarmReceiver.class), 
     PendingIntent.FLAG_CANCEL_CURRENT); 
cancelAlarm(alarmIntent); 
+0

не обязательно указывать FLAG_CANCEL_CURRENT, вы можете передать 0 как флаг – YTerle

+0

Что делать, если у меня нет идентификатора? –

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