【问题标题】:How to cancel alarm programmatically in android? [duplicate]如何在android中以编程方式取消警报? [复制]
【发布时间】:2013-11-23 07:07:15
【问题描述】:

我使用此代码创建了一个警报,它可以正常工作。请建议如何取消该警报。

Intent alarmIntent = new Intent(AlarmClock.ACTION_SET_ALARM);
            alarmIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            alarmIntent.putExtra(AlarmClock.EXTRA_MESSAGE, mEdtTitle.getText()
                    .toString());
            Calendar calendar = Calendar.getInstance();

            calendar.set(Calendar.HOUR, mTimePicker.getCurrentHour());
            calendar.set(Calendar.MINUTE, mTimePicker.getCurrentMinute());

            calendar.set(Calendar.DATE, mDatePicker.getDayOfMonth());
            calendar.set(Calendar.MONTH, mDatePicker.getMonth());
            calendar.set(Calendar.YEAR, mDatePicker.getYear());

            calendar.add(Calendar.MINUTE, 1);
            alarmIntent.putExtra(AlarmClock.EXTRA_HOUR,
                    calendar.get(Calendar.HOUR_OF_DAY));
            alarmIntent.putExtra(AlarmClock.EXTRA_MINUTES,
                    calendar.get(Calendar.MINUTE));
            alarmIntent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
startActivity(alarmIntent);

提前致谢

【问题讨论】:

    标签: android android-intent android-alarms


    【解决方案1】:

    您需要使用AlarmManager 中的cancel(...) 方法,使用与设置警报相同的PendingIntent。示例:

    this.getAlarmManager().cancel(mAlarmPendingIntent); (这是指您从中取消警报的活动或服务)。

    PendingIntent 创建为:

    mAlarmPendingIntent = PendingIntent.getActivity(this, requestCode, intent, flags);

    【讨论】:

    • 你能帮我解决这个问题吗stackoverflow.com/questions/51405397/…@CodeWarrior
    • 取消 PendingIntent 不会取消已经在闹钟中设置的闹钟。它只会取消 PendingIntent,这是首先设置警报的能力。一旦设置,就不能通过取消 PendingIntent 来取消设置。
    【解决方案2】:

    你必须调用取消方法:link

    PendingIntent 应该与您之前使用 AlarmManager 设置的相同。

    【讨论】:

    • 取消 PendingIntent 并不会取消我已经在闹钟中设置的闹钟。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-05
    相关资源
    最近更新 更多