我的应用程序显示通知。我想通过addAction向通知添加一个Action,导致通知消失并在一小时后重新出现,但是我不想为此打开一个Activity,最好的情况:用户单击操作,通知消失,然后在一小时后重新出现,就像通知的贪睡计时器一样。
有没有办法在不打开活动的情况下执行此操作?
感谢您的帮助
答案 0 :(得分:5)
每个通知操作都来自PendingIntent。当然,您不希望发起活动而您不需要。
您的案例的最佳选择是创建PendingIntent:
public static PendingIntent getBroadcast (Context context, int requestCode, Intent intent, int flags)
这样,每当用户点击通知时,它将在系统上生成广播。然后,您必须创建BroadcastReceiver,以接收此广播并使用AlarmManager安排另一个PendingIntent。这个第二个待处理的意图将是一个不同的广播,只要它被解雇,你的BroadcastReceiver就可以接收并显示新的通知。
有意义吗?
** 编辑:
只是为了澄清一个伪示例:
- 您的应用在Manifest中注册了BroadcastReceiver以接收'com.yourapp.mybroadcast'的广播
- 通知有一个com.yourapp.mybroadcast PendingIntent with extras boolean isSchedule = true和int time = 60(60分钟)
- 用户点按通知,此广播被触发,您的BroadcastReceiver收到
onReceive(Context context, Intent intent)
- 在你的onReceive中你读到isSchedule = true(意思是它必须创建一个新的时间表,时间= 60分钟。所以它使用了 AlarmManager用isSchedule =创建一个新的Broadcast PendingIntent 假;将在60分钟内解雇
- AlarmManager将在60分钟后再次调用您的BroadcastReceiver,但这次使用isSchedule = false,因此您的BroadcastReceiver知道它的 是时候再次显示通知了。