gpt4 book ai didi

Android:无法取消重复闹钟

转载 作者:行者123 更新时间:2023-11-29 18:14:06 25 4
gpt4 key购买 nike

我正在创建重复警报。使用以下代码可以正常工作:

Intent intent = new Intent(this.ctx, AlarmReceiver.class);
intent.setAction("" + notificationId);
intent.putExtra(AlarmReceiver.TITLE, alarmTitle);
intent.putExtra(AlarmReceiver.SUBTITLE, alarmSubTitle);
intent.putExtra(AlarmReceiver.TICKER_TEXT, alarmTicker);
intent.putExtra(AlarmReceiver.NOTIFICATION_ID, notificationId);

PendingIntent sender = PendingIntent.getBroadcast(this.ctx, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager am = getAlarmManager();
am.setRepeating(AlarmManager.RTC_WAKEUP, triggerTime, 60000, sender);

现在我想取消现有的通知消息(出于测试目的每分钟弹出一次),我调用以下代码,将相同的 notificationId 传递给它:

Intent intent = new Intent(this.ctx, AlarmReceiver.class);
intent.setAction("" + notificationId);
PendingIntent pi = PendingIntent.getService(this.ctx, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

AlarmManager am = getAlarmManager();
try {
am.cancel(pi);

} catch (Exception e) {
Log.e(PLUGIN_NAME, "AlarmManager update was not canceled. " + e.toString());
}

我看到 pi != null,但是通知不断出现并且没有被取消。这两个代码 fragment 位于同一个类中。

基本上我有两个问题: - 如何使用唯一 ID 取消单个警报? - 我怎样才能取消所有警报,而不考虑 ID?

更新:我发现在这里发布我的问题有助于理清思路。更改取消代码:

PendingIntent sender = PendingIntent.getService( ... )

收件人:

PendingIntent sender = PendingIntent.getBroadcast( ... )

有助于解决问题 1。但是取消所有事件的代码仍然不起作用:

Intent intent = new Intent(this.ctx, AlarmReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(this.ctx, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

AlarmManager am = getAlarmManager();
am.cancel(pi);

最佳答案

我是这里的菜鸟。但我认为如果你想取消警报,你必须使用完全相同的 PendingIntent 实例。这意味着“它们的操作、数据、类型、类和类别是相同的”,如 filterEquals(Intent) 所定义的。因此,您需要在此处使用相同的 requestCode,而不是 0。也许您可以使用一个列表来存储 Notification Id,并迭代它们以取消所有警报。

关于Android:无法取消重复闹钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com