Android: есть ли способ остановить срабатывание AlarmReceiver в BootReceiver - PullRequest
2 голосов
/ 25 ноября 2011

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

Насколько мне известно, нет никакого способа полностью уничтожить AlarmManager изнутри себя. но я могу ошибаться.

Кроме того, поскольку загрузочный приемник зарегистрирован в AndroidManifest.xml и BroadcastReceiver действительно существует только при вызове onReceive, вероятно, нет способа получить ссылку на объект AlarmManager, так что я мог бы отменить тревогу извне с AlarmManager .отменить. Но я могу ошибаться во всем этом.

Поэтому я хотел бы спросить, если я ошибаюсь во всем этом, или есть какой-то способ полностью уничтожить / отменить AlarmManager, запущенный при загрузке (изнутри AlaramManager или снаружи, не имеет значения). Есть идеи? Заранее спасибо

1 Ответ

5 голосов
/ 25 ноября 2011

Вы можете отменить сигнал тревоги в любое время с помощью того же ожидающего намерения.

Intent intent = new Intent(show.this, TimeAlarm.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(show.this, 0,
                intent, PendingIntent.FLAG_CANCEL_CURRENT);

        <Alarm_Manager_Object>.cancel(pendingIntent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...