如果应用程序已经打开或在后台,待定 Intent 不会启动 Activity

Posted

技术标签:

【中文标题】如果应用程序已经打开或在后台,待定 Intent 不会启动 Activity【英文标题】:Pending Intent does not launch Activity if app is already open or in background 【发布时间】:2019-06-11 09:10:37 【问题描述】:

在我的应用程序中,我有一个小部件。如果用户点击小部件,我将使用下面的代码使用挂起的意图打开 SplashScreen。

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    views.setOnClickPendingIntent(R.id.widget_main_layout, pendingIntent);

此代码工作正常,应用程序未打开并启动我的启动画面。

但是,如果应用程序已经打开并处于后台,并且如果我单击小部件,则我的 SplashScreen 不会打开,而是只有应用程序会进入前台。

谁能告诉我我的代码有什么问题?

【问题讨论】:

你如何构建intent?你试过intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)吗? 哦,我想你每次点击小部件时都想从 splash 中打开 APP。我对吗? 是的。我想每次用户点击小部件时打开应用程序 因为你的标志是PendingIntent.FLAG_UPDATE_CURRENT,你应该把它改成FLAG_CANCEL_CURRENT 请将用于生成intent 的代码添加到您的帖子中。 【参考方案1】:

使用此代码

intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);

【讨论】:

【参考方案2】:

将您传递给待处理Activity 的意图标志设置为:

Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK

【讨论】:

以上是关于如果应用程序已经打开或在后台,待定 Intent 不会启动 Activity的主要内容,如果未能解决你的问题,请参考以下文章

应用程序上的 FCM 已关闭

如果他进入后台或在不活动几分钟后如何从 android 应用程序中注销用户

GCM BroadcastReceiver 仅在应用程序正在运行或在后台运行时触发

Intent 和 Intent 过滤器

IOS;当应用程序未运行或在后台时,推送通知不起作用

当应用程序在后台或在本机反应中被杀死时,是不是可以检查用户的移动活动?