如何从推送通知启动后台运行的 android 应用程序?

Posted

技术标签:

【中文标题】如何从推送通知启动后台运行的 android 应用程序?【英文标题】:how to launch background running android app from push notification? 【发布时间】:2019-02-13 06:32:08 【问题描述】:

我正在开发基于推送通知的 android 应用程序。当应用程序收到推送通知时,我需要打开(启动)android 应用程序。请解释一下。

我尝试了以下代码

      <activity                                                                                                                                                                                                           
      android:name="com.yamuko.driver.PickupRequestCustomDialogActivity"
      android:launchMode="singleTask"
      android:theme="@style/NoTitleDialog" />

在 onMessageReceived() 中使用下面的代码。

            Intent home = new Intent();
            Bundle extras = new Bundle();
            home.putExtras(extras);

            home.setAction(Intent.ACTION_MAIN);
            home.addCategory(Intent.CATEGORY_LAUNCHER);
            home.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_SINGLE_TOP);
            ComponentName cn = new ComponentName(getApplicationContext(), PickupRequestCustomDialogActivity.class);
            home.setComponent(cn);
            getApplication().startActivity(home);

【问题讨论】:

可能与***.com/questions/13716723/…重复 【参考方案1】:

您不应在收到推送通知时启动 Activity(例如 FCM)。当设备处于睡眠状态且屏幕关闭时可能会出现这种情况。 相反,您应该创建一个通知。当用户打开设备并点击通知时,您的 Activity 就会启动。

【讨论】:

假设用户在我的应用程序在后台运行时启动了 youtube 应用程序。如何优先考虑我的应用并启动它? 你做不到也不应该这样做。即使所有即时通讯工具都不会这样做,尽管它们是“即时的”,它们只显示一个通知。用户是设备的所有者,而您不是。

以上是关于如何从推送通知启动后台运行的 android 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

如何在后台的android应用程序图标上计算推送通知消息徽章

[Parse][Android] 如何在应用程序运行时禁止显示推送通知?

Android:在应用程序关闭时从后台推送动态通知

当应用程序不在后台运行时如何处理推送通知

如何通知您的 android 应用程序有关推送通知

从 android 推送通知单击启动时,意图数据未在活动中更新