Androids AlarmManager не будет вызывать тревогу - PullRequest
1 голос
/ 08 марта 2012

У меня есть приложение, которое имеет систему сигнализации, которая работает безупречно, и я копирую все 5 классов и просто меняю имя базы данных, но это не работает, я могу пропустить весь код, но я хочу услышать, если кто-нибудьбыло что-то подобное раньше.

, как я вызываю новый ReminderManager (this) .setReminder (mRowId, mCalendar);

rowID заполнен (некоторое число) и mCalendar (имеет дату, котораяЯ сравниваю с датой из Mcalendar другого приложения, которое у меня есть, и оно того же формата), и когда я вызываю это, все идет как следует, это создает ожидаемое намерение

public void  setReminder(Long taskId, Calendar when)
{
    Intent i= new Intent(mContext,OnAlarmReciver.class);
    i.putExtra(DatabaseIN.KEY_ROWID,(long)taskId);


    PendingIntent pi=PendingIntent.getBroadcast(mContext,0, i, PendingIntent.FLAG_ONE_SHOT);
    mAlarmManager.set(AlarmManager.RTC_WAKEUP,when.getTimeInMillis(),pi);

}
after this nothing happens... can anyone help

Ответы [ 3 ]

0 голосов
/ 08 марта 2012

PendingIntent.getBroadcast будет повторно использовать соответствующий pendingIntent, поэтому, возможно, он уже сработал с этим ожидающим намерением (например, возможно из кода, из которого вы его скопировали), и, поскольку вы используете флаг FLAG_ONE_SHOT, он будет срабатывать только один раз.

Быстрый тест - удалить флаг FLAG_ONE_SHOT и посмотреть, срабатывает ли он. Если это проблема, просто используйте другой код запроса в PendingIntent.getBroadcast.

0 голосов
/ 11 марта 2012

Попытайтесь очистить ваш проект-> очистить, и если это не поможет создать новый проект и начать писать предложения заново ... это сработало: D

0 голосов
/ 08 марта 2012

Возможно, when еще не произошло (слишком далеко в будущем) или это уже произошло (было в прошлом до вашего звонка set()).

Или, возможно, у вас нет OnAlarmReceiver определено в вашем манифесте.

...