如何从推送通知启动后台运行的 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应用程序图标上计算推送通知消息徽章