如何取消警报管理器的每日通知?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何取消警报管理器的每日通知?相关的知识,希望对你有一定的参考价值。

在我的应用程序中,我正在使用警报管理器每天显示通知,但是我想为用户创建一个取消每日通知的选项。在用户单击时,工作的警报管理器必须永久停止。

如何实现?

这是在应用安装时调用的方法,然后每天开始出现通知,如何永久取消通知?

 public  void AlaramNotification() {
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        Intent notificationIntent = new Intent(StartActivity.this, AlarmReceiver.class);
        PendingIntent broadcast = PendingIntent.getBroadcast(StartActivity.this,
                0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        cal = Calendar.getInstance();
        Calendar now = Calendar.getInstance();
        cal.set(Calendar.HOUR_OF_DAY, 11);
        cal.set(Calendar.MINUTE, 15);
        cal.add(Calendar.SECOND, 0);
        cal.set(Calendar.AM_PM,Calendar.AM);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

            if (now.after(cal)) {
                Log.d("Hey","Added a day");
               cal.add(Calendar.DATE, 1);
            }
            alarmManager.setExact(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), broadcast);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), 24*60*60*1000, broadcast);


        }
        else {

        }

    }
答案
当用户取消每日通知时,如下所示使用

alarmManager上的cancel()并具有待定的意图来停止alarmManager。

alarmManager.cancel(broadcast);
您可能需要将

broadcast

设置为全局变量。
另一答案
您可以尝试这种方式:

AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); Intent intent = new Intent(StartActivity.this, AlarmReceiver.class); PendingIntent broadcast = PendingIntent.getActivity(StartActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); alarmManager.cancel(broadcast);

以上是关于如何取消警报管理器的每日通知?的主要内容,如果未能解决你的问题,请参考以下文章

如何向 UILocalNotification 警报添加操作按钮/操作?

普罗米修斯中的警报管理器给出退出代码错误并忽略普罗米修斯中警报管理器的分配

如何使用警报管理器将数据从片段传递到广播接收器

我如何将字符串从主要活动传递到带有警报管理器的广播接收器?

在Android Studio中设置多个警报

如何每5分钟发送一次通知?