Intereting Posts
Проблемы с защитой Android для выпуска Какова наилучшая практика для совместного использования классов между приложениями Wear и Android? Android Google Drive SDK – как показать список файлов в выбранной папке Почему JUnit 4 на Android не работает? Как изменить образ ImageView на Android? Android OpenCV Улучшение качества обнаружения Javascript 'deviceorientation' event – какие датчики он измеряет? Можете ли вы устанавливать даты в андроид Что это означает: Должен ли я явно установить «android: fullBackupContent», чтобы избежать резервного копирования определенного регистратора GCM? Android BroadcastReceiver без фильтра намерения Android: расширение контактной книги пользователя. Производительность ContentProvider vs Sqlite vs Список в памяти Приложение Cordova на Android с использованием отправки SSL multipart / form-data приводит к ошибке приложения Rack: # <EOFError: bad content body> BroadcastReceiver для многостраничного SMS Как настроить gmail в эмуляторе Android? Удаление последнего элемента из spinner удаляет весь список

Как установить несколько аварийных сигналов с помощью диспетчера аварийных сигналов Android

Я создаю аварийное приложение. Я успешно реализовал основные функции будильника.

Calendar calendar = Calendar.getInstance(); calendar.set(calendar.HOUR_OF_DAY, sHour); calendar.set(calendar.MINUTE, sMin); calendar.set(calendar.SECOND, 0); calendar.set(calendar.MILLISECOND, 0); long sdl = calendar.getTimeInMillis(); Intent intent = new Intent(AlarmList.this, AlarmReceiver.class); PendingIntent sender = PendingIntent.getBroadcast(AlarmList.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT); AlarmManager ALARM1 = (AlarmManager)getSystemService(ALARM_SERVICE); ALARM1.set(AlarmManager.RTC_WAKEUP, sdl, sender); 

В моем приложении пользователь может выбрать дни (воскресенье, понедельник …), чтобы повторять сигнал тревоги еженедельно. Я пытаюсь создать несколько сигналов тревоги, чтобы повторять еженедельно, но не знаю, как это сделать. Могу ли я создать его с использованием (повторить) интервала или создать несколько диспетчеров аварийных сигналов?

Solutions Collecting From Web of "Как установить несколько аварийных сигналов с помощью диспетчера аварийных сигналов Android"

Вам нужно использовать different Broadcast id's для pending intents . Что-то вроде этого:

  Intent intent = new Intent(load.this, AlarmReceiver.class); final int _id = (int) System.currentTimeMillis(); PendingIntent appIntent = PendingIntent.getBroadcast(this, _id, intent,PendingIntent.FLAG_ONE_SHOT); 

Использование системного времени должно быть уникальным идентификатором для каждого ожидающего вас намерения.

Из документов :

Если для этого намерения уже есть сигнал тревоги (при равенстве двух намерений, определяемых filterEquals (Intent) , он будет удален и заменен этим

Несколько AlarmManagers не смогут решить вашу проблему. Если у них есть несколько разных аварийных сигналов (разные времена и разные дни), вам необходимо установить будильник в BroadcastReceiver каждый раз, когда вы запускаете предыдущий аварийный сигнал.

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

Чтобы установить несколько аварийных сигналов, вам нужно каждый раз определять свое Intent чтобы оно отличалось от других. Самый простой способ найти это – установить поле данных вашего Intent следующим образом:

 // give your alarm an id and save it somewhere // in case you want to cancel it in future String myAlarmId = ...; // create your Intent Intent intent = new Intent(AlarmList.this, AlarmReceiver.class); intent.setData(Uri.parse("myalarms://" + myAlarmId)); ... 

Остальная часть вашего кода @ Hassy31 прекрасна, как есть, и остается неизменной.

Обратите внимание, что параметр PendingIntent.getBroadcast() методе PendingIntent.getBroadcast() (как предложено @parag) не используется в соответствии с документацией, поэтому это неправильный способ сделать это.

Установить id Broadcast для ожидания

 for (int id = 0; id < 3; id++) { // Define pendingintent PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id,ntent, 0); // set() schedules an alarm alarmManager.set(AlarmManager.RTC_WAKEUP, alertTime, pendingIntent); }