自动重复本地通知?

repeating local Notifications automatically?

所以我设法在 android 中创建了一个本地通知。下面给出了部分代码。

AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),alarmManager.INTERVAL_DAY,pendingIntent);

现在创建通知没问题了。问题是我目前正在通过按下按钮来测试它,这会启动整个通知事件,通知每天同时出现。但是,我仍然不想添加一个按钮供用户按下,所以我必须删除按钮,并且每次用户启动应用程序时只需要 运行 这个警报启动代码(在 Main class' onCreate) 只是为了确保通知已激活。然而,一遍又一遍地设置相同的闹钟对我来说似乎并不合适,因为一次就足够了。连续这样做真的会导致任何问题吗?或者有什么办法可以得到当前激活的 ALARM SERVICE? (如何?)。我正在考虑使用共享首选项进行单次激活,但服务可能同时停止,然后不再有通知。在这种情况下你有什么建议?我看到其他一些帖子也有几乎相同的问题,但它与我的无关。

"is there any way to get the current activated ALARM SERVICE ? (how?)" 长话短说,不,你不能直接从 Android(你可以在调试时使用 shell,或者如果你已经 root 了你的设备,在这种情况下,是的)。

但是,好消息:警报完全由其未决意图定义,因此,相同的未决意图,相同的警报。 你可以做的是每次打开主 activity 时都使用相同的 EXACT 未决意图调用你的警报。此时你有 2 个关于 pendin 意图标志的选择:你可以使用 PendingIntent.FLAG_CANCEL_CURRENT 或 PendingIntent.FLAG_UPDATE_CURRENT.

第一个会收到警报,如果有一个相应的待定 intet 已经注册,则什么都不做(取消请求离开当前)

第二个将与闹钟共进午餐,如果已经注册了一个相应的未决意图,则会更新当前闹钟,并且不会在您每次打开应用程序时添加大量闹钟。

就个人而言,第二个总是为我完成他的工作

(参见 https://developer.android.com/reference/android/app/PendingIntent.html