【问题标题】:How to trigger pop-up in app via notification click even when app is not running即使应用程序未运行,如何通过通知点击触发应用程序中的弹出窗口
【发布时间】:2021-05-07 22:52:16
【问题描述】:

我正在尝试在我的应用中实现计时器。计时器在前台服务中运行,并按预期工作。

点击通知后,它应该 a) 打开 Timer 活动(这是主要活动)和 b) 打开一次性弹出窗口,询问您是否要停止它。 (不是弹出窗口的全部范围,但我已经为这个示例进行了简化)。

由于一些挑战/限制,我在使用此功能时遇到了困难。我的两个主要方法是通过 Pending Intent 使用 RxJava 和广播接收器。

如果应用程序已打开并在前台,我可以通过广播意图使用可观察对象并通过 Timer 活动收听它。当它收到一个值时,它会显示弹出窗口。很简单。

如果应用程序已关闭或在后台,我尝试使用带有键值附加项的待处理意图,例如 ("should-show-pop-up",true)。然后,我检查 onStart 方法是否存在此额外内容,如果为真,则显示弹出窗口。但是,现在每次我打开应用程序时它都会显示弹出窗口。如果应用程序进入后台然后返回前台,则 Activity 仍会保留该额外内容并触发弹出窗口。

所以底线:如果用户按下通知,我如何打开我的应用并显示一个弹出窗口?即使应用程序已关闭或在后台

【问题讨论】:

    标签: android kotlin broadcastreceiver android-pendingintent


    【解决方案1】:

    最好的方法是使用单独的Activity,而不是你的主要Activity。当您创建 Intent 以放入 Notification 时,添加以下标志:

    Intent.FLAG_ACTIVITY_NO_HISTORY
    Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
    

    这将确保带有“附加”的Intent 不会成为“从主屏幕启动您的应用时使用的默认Intent

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-30
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-10
      相关资源
      最近更新 更多