我卡住了。当我的应用程序启动时,我想检查我之前设置的警报是否有效。如果没有,那么我想设置它。
我提到了 这个解决方案。我正在尝试匹配这样的意图:
Intent intent = new Intent();
intent.setAction("com.vit.upload");
PendingIntent pIntent = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_NO_CREATE);
但它不起作用。还有什么会起作用?
原文由 NullPointerException 发布,翻译遵循 CC BY-SA 4.0 许可协议
首先,关于如何访问以前创建的警报的小教程:
您可以通过使用唯一 ID 创建每个警报来区分警报,例如:
当您想要访问此警报时,您必须使用相同的唯一 ID 创建相同的 PendingIntent。例如,以下将仅访问您使用 PendingIntent id 1234 创建的警报。然后它将取消前一个警报并重置它。
这个想法很简单。跟踪 ID,然后使用它们访问各自的警报。如果您创建多个具有相同 ID 的警报,最近的一个将取消前一个。
来到你的主要问题,而不是检查你的警报是否在每次启动你的应用程序时都处于活动状态,只需在你的活动的
onCreate()
方法中重新设置它。具有与我上面描述的相同的 PendingIntent。这为您省去了检查警报是否已预先设置的所有麻烦。由于您的目标是让警报保持活动状态,因此每次启动应用程序时覆盖先前设置的警报不会有什么坏处。只需确保您使用相同的 ID 来创建您的 PendingIntent。不要忘记检查您的闹钟时间是否已经过去,以避免尝试为过去的时间设置闹钟,这将立即触发它。
让我们考虑另一种情况:当您关闭设备时,所有闹钟都会被取消。这让您别无选择,只能在重新启动时再次设置它们。为此,您必须使用 BroadcastReceiver 。
这个答案 将帮助您了解如何做到这一点。只需按照上面的建议在 BroadcastReceiver 的 onReceive() 方法中重新创建警报。