Код, который выполняет отмену, не обязательно должен быть инициатором тревоги. Ваш код идентифицирует сигнал тревоги, который нужно отменить, идентифицировав PendingIntent, который его создал. Вы можете «изготовить» факсимиле оригинала PendingIntent
следующим образом. , .
String pname = this.getPackageName();
// manufacture an appropriate context
Context mycontext = null;
try {
mycontext = createPackageContext(pname,CONTEXT_IGNORE_SECURITY);
} catch (NameNotFoundException e) {
// handle exception here
e.printStackTrace();
}
// and generate a pendingintent
PendingIntent pi = PendingIntent.getService(mycontext,
0, new Intent(mycontext, myalarmreceiver.class), 0);
// Now use alarmmanager to terminate the alarm
AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
am.cancel(pi);
Это может не сработать в вашей ситуации, но если вы не пробовали этот подход, это может быть хорошим местом для начала!