gpt4 book ai didi

android - 覆盖现有警报

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:51 25 4
gpt4 key购买 nike

我在我的应用程序中创建了一个警报,它每天使用以下代码调用 BroadcastReceiver 来设置通知:

Intent intent = new Intent(Benachrichtigung.CUSTOM_INTENT);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);

Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 00);

alram = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alram.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), (24 * 60 * 60 * 1000), pendingIntent);

现在我希望用户可以设置通知时间,所以我必须用新值调用 calendar.set。如何用新警报覆盖现有警报?

最佳答案

要使用 AlarmManager 取消或更新警报,Intent 必须使用 filterEquals 匹配。所以基本上,您重新创建 PendingIntent 与您对原始对象所做的相同,并且 AlarmManager 会发现它们是相同的。这包括 REQUEST_CODEINTENT_ACTIONINTENT_DATA(我可能遗漏了一些东西,但这些很重要。

注意:

EXTRAS 不用于比较两个 Intent

因此,如果两个 Intent 相等,则第一个将被覆盖。当我有更多时间时,我可以尝试找到资源来更好地解释这一点。

根据Intent Docs filterEquals

Determine if two intents are the same for the purposes of intent resolution (filtering). That is, if their action, data, type, class, and categories are the same. This does not compare any extra data included in the intents.

关于android - 覆盖现有警报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17200069/

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