Как создать другое ожидающее намерение, чтобы filterEquals () возвращало false?

Я использую AlarmManager для настройки повторяющихся намерений, но это вызвало некоторые небольшие проблемы, так что надеюсь, что кто-нибудь может помочь.

Резюме

Есть 2 незавершенных намерения. Один работает на 1000, а другой - на 2000 каждый день. Каждый содержит идентификатор строки из базы данных для идентификации. Код выглядит примерно так:

Intent i = new Intent(mContext, ScheduleReceiver.class);
i.putExtra(RuleDBAdapter.KEY_ROWID, (int)taskId);
PendingIntent pi =PendingIntent.getBroadcast(...);
mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi); 

Удаление:

Проблема в том, что нам нужно удалить один из них. Правильный способ удалить ожидающее намерение - установить идентичное, а затем вызвать отмену из AlarmManager.

Документация по Android:

public void cancel (операция PendingIntent)
Удаление любых сигналов тревоги с соответствующим намерением. Любая тревога любого типа, намерение которой соответствует этому (как определено filterEquals (Intent)), будет отменена.

public boolean filterEquals (Intent other)
Определяет, являются ли два намерения одинаковыми для целей разрешения намерений (фильтрации).То есть, если их действие, данные, тип, класс и категории совпадают. Этот не сравнивает никакие дополнительные данные , включенные в намерения.

Итак, в приведенном выше примере, если я сделаю идентичное намерение, а затем отменим, оба вышеуказанных намерения будут отменены, потому что они относятся к одному классу / одному действию и т. Д. (За исключением «дополнительных» data - rowId, но filterEquals не заботится о дополнительных данных).

Есть ли способ решения этой проблемы?

20
задан Mr_and_Mrs_D 26 May 2013 в 14:07
поделиться