1

我的应用程序显示通知。我想通过 addAction 向通知添加一个操作,导致通知消失并在一小时后重新出现,但是我不想为此打开一个活动,最好的情况是:用户单击操作,通知消失并且然后在一小时后重新出现,就像通知的打盹计时器一样。

有没有办法在不打开活动的情况下做到这一点?

谢谢你的帮助

4

1 回答 1

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 和额外的 boolean isSchedule = true 和 int time = 60(60 分钟)
  • 用户点击通知并触发此广播并且您的 BroadcastReceiver 接收onReceive(Context context, Intent intent)
  • 在你的 onReceive 中你读到 isSchedule=true (这意味着它必须创建一个新的计划和时间 = 60 分钟。所以它使用 AlarmManager 创建一个新的广播 PendingIntent 与 isSchedule = false; 在 60 分钟内触发
  • AlarmManager 将在 60 分钟内再次调用您的 BroadcastReceiver,但这次 isSchedule = false,因此您的 BroadcastReceiver 知道再次显示通知的时间。
于 2013-02-18T13:40:01.073 回答