如何将 PendingIntent 用于两个不同的活动?

Posted

技术标签:

【中文标题】如何将 PendingIntent 用于两个不同的活动?【英文标题】:How to use PendingIntent for two different activities? 【发布时间】:2012-12-07 07:24:52 【问题描述】:

我正在使用 PendingIntent 将用户从推送通知带到活动 B,即当用户点击通知时,它将转到屏幕 B。

我希望它仅在应用程序加载并运行时成为屏幕 B,否则它应该转到屏幕 A。我也实现了这一点。

现在,有一个场景,我收到了通知,因此意图设置为屏幕 B,但我没有点击它。如果我使用 DDMS 终止应用程序进程,或者如果 android 在我点击通知之前 终止应用程序,然后我点击它,它会尝试加载活动 B,这在这种情况下不是我想要的。在这种情况下,我想加载活动 A,这是应用程序的第一个场景。

请提出建议!

【问题讨论】:

您的问题不清楚。能否详细说明您的用例 你能用源代码详细说明你的问题吗 【参考方案1】:

听起来您正在决定是在发布通知时启动活动 A 还是 B,正如您所发现的那样,这将不起作用:一旦您将通知提交到通知管理器,您就可以不要对其进行更改。

这样做的方法是始终启动相同的活动,但让该活动可能根据您想要的任何标准将用户重定向到不同的活动。例如,您可以启动活动 B,如果应用程序尚未在前台,则该活动会立即将用户反弹到 A。 (您也可以使用第三个活动来执行此操作,该活动的工作只是为用户路由,或使用服务或广播。)

现在,关于将用户发送到何处的决定是在用户点击通知时做出的,而不是在发布通知时做出的。

【讨论】:

感谢您的澄清。

以上是关于如何将 PendingIntent 用于两个不同的活动?的主要内容,如果未能解决你的问题,请参考以下文章

Android - 清除任务标志不适用于 PendingIntent

如何将具有最后位置的 LocationResult 发送到 PendingIntent

如何获取和取消 PendingIntent?

PendingIntent requestCode flags 参数

如何阻止相同的广播(来自 PendingIntent)排队?

PendingIntent的使用