Я создал сигнал тревоги в действии и пытаюсь отменить его в другом приемнике вещания. Этот сигнал тревоги срабатывает в определенное время, чтобы показать уведомление пользователю
Я проверил здесь различные сообщения, но ничего не помогло.
Код, который я использую, выглядит следующим образом:
MainActivity.java
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(mydateobj.getTime());
calendar.set(Calendar.HOUR_OF_DAY, 9);
calendar.set(Calendar.MINUTE, 20);
Intent intent = new Intent(MainActivity.this, Myreceiver.class);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
intent.putExtra("pendingIntent",pendingIntent);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
И моя Broadcastreceiver реализациякак показано ниже:
@Override
public void onReceive(Context context, Intent intent) {
Intent newIntent = new Intent(context,Myreceiver.class);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
if(intent!= null) {
PendingIntent pendingIntent = intent.getParcelableExtra("pendingIntent");
if(pendingIntent!=null)
{
alarmManager.cancel(pendingIntent);
pendingIntent.cancel();
}
}
Я получаю нулевое значение pendingIntent, поэтому оно не отменяется, поэтому я получаю повторное уведомление.
Я также пытался создать PendingIntent в моем приемнике стот же идентификатор и флаг, и попытался отменить диспетчер аварий, а также pendingIntent , созданный в этом приемнике, однако он не работал.
Любая помощь приветствуется.