gpt4 book ai didi

android - 有什么方法可以检查是否已经设置了闹钟?

转载 作者:IT老高 更新时间:2023-10-28 21:47:51 26 4
gpt4 key购买 nike

我被困住了。当我的应用程序启动时,我想检查我之前设置的警报是否存在。如果没有,那么我想设置它。

我提到了this solution .我试图匹配这样的 Intent :

Intent intent = new Intent();
intent.setAction("com.vit.upload");
PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE);

但它不起作用。还有什么办法?

最佳答案

首先,关于如何访问以前创建的警报的小教程:

您可以通过创建具有唯一 ID 的警报来区分警报,例如:

Intent intent = new Intent(this, AlarmReceiverActivity.class);
PendingIntent pi = PendingIntent.getActivity(this,UNIQUE_ID_GOES_HERE, intent, 0);
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis ,pi);

当您想要访问此警报时,您必须创建具有相同唯一 ID 的相同 PendingIntent。例如,以下将仅访问您使用 PendingIntent id 1234 创建的警报。然后它将取消前一个并重置它。

Intent intent = new Intent(this, AlarmReceiverActivity.class);
PendingIntent pi = PendingIntent.getBroadcast(this, 1234, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, triggerAtMillis ,pi);

这个想法很简单。跟踪 id,然后使用它们访问各自的警报。如果您创建多个具有相同 id 的警报,则最近的警报将取消上一个。

回到您的主要问题,每次启动应用程序时不要检查警报是否处于 Activity 状态,只需在 Activity 的 onCreate() 方法中重新设置它。与我上面描述的相同的 PendingIntent 。这样可以省去检查警报是否之前设置的所有麻烦。由于您的目标是让警报保持活跃,因此每次启动应用程序时覆盖先前设置的警报不会有什么坏处。只需确保使用相同的 id 来创建 PendingIntent。

不要忘记检查您的闹钟时间是否已经过去,以避免尝试将闹钟设置为过去的时间,这会立即触发。

让我们考虑另一种情况:当您关闭设备时,您的所有闹钟都会取消。这使您别无选择,只能在重新启动时再次设置它们。为此,您必须使用 BroadcastReceiver .

This answer将帮助你如何做到这一点。只需按照上面的建议在 BroadcastReceiver 的 onReceive() 方法中重新创建警报。

关于android - 有什么方法可以检查是否已经设置了闹钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930034/

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