1

Хорошо, у меня есть следующий метод:
PendingIntent FLAG_NO_CREATE с другим контекстом

private boolean isPresentPengingIntent() { 
    return PendingIntent.getService(context,0,myIntent,PendingIntent.FLAG_NO_CREATE) != null; 
} 

myIntent всегда то же самое.

Я интересно - если я прохожу другой context в этот метод, он возвращает ложных.

Но если я планирую новый Alarm с:

PendingIntent.getService(context, 0, myIntent, PendingIntent.FLAG_ONE_SHOT); 

(также с различными context) - она ​​будет стирать предыдущую тревогу (потому что myIntent одно и то же, поэтому PendingIntent рассматривает то же самое).

Почему существует другое поведение из-за context?
Есть ли способ игнорировать параметр context в моем методе isPresentPengingIntent?

ответ

1

Context не является вашей проблемой. То, что вы видите, - это странность в том, как работает PendingIntent.FLAG_ONE_SHOT.

Вы не можете определить, существует или нет код PendingIntent, если вы создали PendingIntent с FLAG_ONE_SHOT. Что касается Android, то этого PendingIntent не существует.

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

+0

См. Http://stackoverflow.com/questions/27763646/how-do-i-check-if-alarmmanager-has-an-alarm-set-with-flag-one-shot/27838622#27838622 –

+1

Вы, Re абсолютно прав, спасибо много! –