обновление сигнала тревоги от ожидания намерения в Android

Я работаю над проектом будильника и хочу отредактировать уже установленный будильник. когда я редактирую будильник, время будильника обновляется, но значения, которые я отправляю с помощью putExtra(), не меняются. Я использую флаг PendingIntent.FLAG_ONE_SHOT.

Но когда я устанавливаю флаг PendingIntent.FLAG_UPDATE_CURRENT, все значения putExtra() также меняются, но теперь проблема в том, что когда я нажимаю кнопку остановки и finish() текущее действие, оно вызывается снова.

означает, что когда я заканчиваю действие, оно снова вызывается при нажатии кнопки, пока я заканчиваю текущее действие. пожалуйста, помогите мне. Заранее спасибо.


person Sunit Kumar Gupta    schedule 27.12.2010    source источник


Ответы (2)


Мой предпочтительный способ обновить PendingIntent в AlarmManager — отменить его и переустановить
не забудьте отменить:

1) AlarmManager.cancel(pendingIntent) с pendingIntent, который соответствует вашему ожидающему намерению (тот же класс , то же действие ... но не заботьтесь о дополнительных см. IntentFilter)
2) pendingIntent.cancel();
3) pendingIntent = new PendingIntent() ... и другие настройки
4) AlarmManager.set(... для предоставления нового PendingIntent

person Emmanuel Devaux    schedule 19.08.2011
comment
В случае установки будильника событий календаря. Если мы используем локальную переменную, а не статическую, мы можем назначить разное время для разных событий. Но кажется, что вы показали статический пример pendingIntent - person Pattabi Raman; 23.09.2011
comment
ДЕЙСТВИТЕЛЬНО ли это единственный способ обновить будильник? РАБОТАЕТ ДЛЯ МЕНЯ. - person Shajeel Afzal; 22.08.2013

Каждый будильник имеет свой уникальный идентификатор, если вы хотите обновить будильник, вы можете создать новый с таким же UNIQUE_ID.

PendingIntent pi = PendingIntent.getBroadcast(this, PENDING_INTENT_ID, intent, 0);

Проверьте этот ответ

person Nissar    schedule 26.02.2014