Android – как переназначить будильники, связанные с событиями приложения

Я нашел много примеров и вопросов о том, как активировать тревогу с помощью AlarmManager (как периодическую, так и одиночную), но ничего похожего на то, что мне нужно.

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

Я думал удалить старый будильник и создать новый с учетом нового запуска по расписанию. Зная, что я могу удалить тревогу с помощью alarmMgr.cancel(alarmIntent), как я могу удалить конкретную тревогу, связанную с событием перепланирования? Должен ли я сделать каждый alarmIntent каким-то образом уникальным? Или есть лучший способ, который я не рассматривал (кроме использования API-интерфейсов Календаря Google для планирования и перепланирования события и управления уведомлением)?


person Luca177    schedule 21.10.2014    source источник


Ответы (1)


При планировании будильника с помощью API set()

public void set (int type, long triggerAtMillis, PendingIntent operation)

в последнем аргументе вы можете указать код запроса, используя getBroadcast

public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)

пример для этого будет:

alarm.set(AlarmManager.RTC_WAKEUP, time, PendingIntent.getBroadcast(mContext, id, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT));

Если вы хотите отменить или перенести будильник, вы можете использовать «id», чтобы указать, какой будильник.

person user2731584    schedule 14.01.2015