所以我设法在android中创建了一个本地通知。部分代码如下。
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),alarmManager.INTERVAL_DAY,pendingIntent);
现在创建通知没问题。问题是我目前正在使用按钮按下它来启动整个通知事件,同时每天都会出现通知。但是,我仍然不想添加按钮供用户按下,因此每次用户启动应用程序时,我都必须删除该按钮并运行此警报启动代码(在Main class' onCreate)只是为了确保激活通知。然而,由于一次性就足够了,我一遍又一遍地设置相同的警报似乎不合适。它是否真的导致任何问题持续不断?或者有没有办法获得当前激活的警报服务? (怎么样?)。我正在考虑使用共享首选项进行一次性激活,但是同时可能会停止服务,然后就不再有通知了。在这种情况下你有什么建议?我看到其他一些帖子几乎有同样的问题,但它与我没有关系。
答案 0 :(得分:1)
"有没有办法获得当前激活的警报服务? (工作原理)" 简而言之,不,你不能直接来自Android(你可以用shell来做,同时调试OR,如果你植根了你的设备,在这种情况下,是的)。
但是,好消息:警报完全由其未决意图定义,因此,相同的未决意图,同样的警报。 您可以做的是每次打开具有相同EXACT待定意图的主活动时都会调用警报。此时你可以选择pendin intent的标志:你可以使用PendingIntent.FLAG_CANCEL_CURRENT或PendingIntent.FLAG_UPDATE_CURRENT。
第一个将会发出警报,如果有一个相应的待处理的intet已经注册,将无所事事(取消当前的请求)
第二个将会发出警报,如果已经注册了一个相应的待处理意图,则会更新当前警报,并且每次打开应用程序时都不会添加大量警报。
就个人而言,第二个人总是为我完成他的工作
(见https://developer.android.com/reference/android/app/PendingIntent.html)