取消PendentIntent(广播,AlarmManager)无效



我正在尝试取消特定事件的广播

我有以下代码来设置AlarmManager

 done.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i=new Intent(getApplicationContext(),NotificationReciever.class);  // go to NotificationReciever
            i.putExtra("id",getIntent().getStringExtra("id"));  //send id that same id own each item in database
            Toast.makeText(getBaseContext(),getIntent().getStringExtra("id"),Toast.LENGTH_SHORT).show();
            PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext(),(int)id,
                    i,PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.set(AlarmManager.RTC_WAKEUP, calendar2.getTimeInMillis(),pendingIntent); //go to  other activity must be changed to proper notificaton
            Reminder.super.onBackPressed();
        }
    });

当我想删除AlarmManager ...

Intent i=new Intent(getApplicationContext(),NotificationReciever.class);
                        PendingIntent pendingIntent=PendingIntent.getBroadcast(getApplicationContext()
                                ,Integer.parseInt(notesData.getID())
                                ,i
                                ,PendingIntent.FLAG_UPDATE_CURRENT);
                        pendingIntent.cancel();
                        AlarmManager alarmManager= (AlarmManager) getSystemService(ALARM_SERVICE);
                        alarmManager.cancel(pendingIntent);

但是它不会取消警报器,有什么问题?

看起来您误解了AlarmManager及其工作的概念。我建议您阅读警报经理|与示例一起工作

要回答您的问题 - 要删除预定的警报,您需要删除相应的pendingintent。在创建pendingIntent

时,请始终注意两件事
  • id-这是唯一标识符
  • 标志 - 标志定义待处理意图的行为

要从应用程序中的任何地方取消计划的警报

 PendingIntent pendingIntent=PendingIntent.getBroadcast(this,REQUEST_CODE,intent,PendingIntent.FLAG_NO_CREATE);
 if (pendingIntent!=null)
    alarmManager.cancel(pendingIntent);

使用flag_no_create,如果不存在pendingIntent,它将返回null。如果已经存在,它将返回对现有的pendentIntent的引用。使用flag_no_create取消之前,您还可以确认警报是否已安排。

最新更新