Android отменяет все настройки будильника - PullRequest
2 голосов
/ 30 мая 2010

Я делаю приложение для событий, и пользователь может установить напоминание о событиях, которые он хочет. Поэтому я использую alarmManager для создания будильника. Я хотел бы включить опцию «Отменить все» в моей основной деятельности, чтобы я мог отменить все тревоги, созданные моим приложением. Обычный метод отмены тревоги с тем же намерением на самом деле не помогает, потому что я установил тревоги на другую деятельность, чем та, в которой я хочу их отменить. Так есть ли способ отменить все тревоги, созданные моим приложением? Спасибо!

1 Ответ

2 голосов
/ 29 июня 2010

Код, который выполняет отмену, не обязательно должен быть инициатором тревоги. Ваш код идентифицирует сигнал тревоги, который нужно отменить, идентифицировав PendingIntent, который его создал. Вы можете «изготовить» факсимиле оригинала PendingIntent следующим образом. , .

   String pname = this.getPackageName();

   // manufacture an appropriate context
   Context mycontext = null;
   try {
      mycontext = createPackageContext(pname,CONTEXT_IGNORE_SECURITY);
   } catch (NameNotFoundException e) {
      // handle exception here
      e.printStackTrace();
   }
   // and generate a pendingintent
   PendingIntent pi = PendingIntent.getService(mycontext,
                    0, new Intent(mycontext, myalarmreceiver.class), 0);
   // Now use alarmmanager to terminate the alarm
   AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
   am.cancel(pi);

Это может не сработать в вашей ситуации, но если вы не пробовали этот подход, это может быть хорошим местом для начала!

...