2013-03-02 4 views
0

Я пытаюсь отменить будильник, который был установлен в последний раз, когда мое приложение было запущено. Этот сигнал тревоги имеет параметр PendingIntent, который был установлен с PendingIntent.getBroadcast и внутренним намерением, который содержит некоторые переменные, заданные intent.putExtra. Мой вопрос в том, что я знаю, что аварийные сигналы можно отменить, вызвав alarmManager.cancel(pendingIntent) где pendingIntent такой же, как тот, который использовался для установки будильника. Но если переменные, помещенные в намерение, будут изменены, будильник все равно будет отменен? Например, я установил будильник с намерением.putExtra («Joe»), где Joe является именем контакта. Позже мое приложение закрыто, и когда он перезапускается, я пытаюсь отменить будильник для «Джо», но пользователь изменил имя контакта на «Джонс». Могу ли я отменить будильник, не зная переменных, которые я ввел в намерения?Отмена сигналов тревоги с помощью PendingIntents

Спасибо!

ответ

1

Я думаю, что он должен отменить аларам в любом случае, хотя некоторые данные разные. Метод cancel говорит:

Любой сигнал тревоги, любого типа, чьи Намерение матчи это одно (как определено filterEquals (Intent)), будет отменена.

И filterEquals говорит:

Определить, если два намерения являются одинаковыми для целей умысел разрешения (фильтрация). То есть, если их действие, данные, тип, класс и категории одинаковы. Не содержит дополнительных данных, относящихся к объектам.

Как бы то ни было, я все равно испытал бы это сам.

0

Согласно this question (который ссылается на документацию), все, что вы добавляете с помощью putExtra, не принимается во внимание при проверке того, совпадает ли намерение с другим.

Не имеет значения, изменены ли дополнительные данные.

Смежные вопросы