结束一个由待处理意图启动的活动

6

在我的应用中,我创建了一个自定义通知,其中包含一个按钮,用于显示最近的应用程序(而不是长按home键)

当用户打开主活动并按下Home键返回主屏幕,然后拖动通知抽屉并单击按钮:

期望结果是显示最近的应用程序,并且主活动是其中的一个。

实际结果是显示了最近的应用程序,但主活动不在其中并且主活动会恢复。

使用待处理意图启动“RecentApps(一个显示最近应用的虚拟类)”类的代码如下:

    Intent recentAppIntent = new Intent(getBaseContext(), RecentApps.class);
    PendingIntent pendingrecentAppIntent = PendingIntent.getActivity(getBaseContext(), 1, recentAppIntent, 0);
    notificationView.setOnClickPendingIntent(R.id.recentAppButt, pendingrecentAppIntent);

我认为问题出在getBaseContext上,当主活动存在且未完成时,最近使用的应用程序将显示,但是使用上下文是主活动。

我尝试过getApplication和getApplicationContext,但都不起作用。

我还尝试使用“recentAppIntent”的标志,但它不起作用,使用

recentAppIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);

但这不是我需要的。

所以,我的问题是“如何完成启动待定意图的主活动”。

提前感谢,Mostafa


你在调用PendingIntent.getActivity()new Intent()时使用的Context与你的问题无关(换句话说,你使用哪个Context都没有影响)。否则我无法理解你的问题。你能更好地解释一下你想要发生什么以及实际发生了什么吗? - David Wasser
感谢您的回复,我想要的是:当打开我的应用程序的主活动并使用主页按钮进入主屏幕,然后从我的自定义通知中单击“最近使用的应用”按钮时,我的应用程序应包括在最近打开的应用程序中。实际发生的情况是:我的应用程序未包含在最近使用的应用程序中,而是主活动恢复,当使用返回按钮使最近使用的应用程序消失时,主活动出现。 - mostafa_fci
2个回答

5
您需要确保您的MainActivityRecentApps不属于同一个任务。"最近使用的应用程序"实际上并不显示最近使用的应用程序,它显示最近的任务
要确保RecentApps不在与MainActivity相同的任务中,您可以将以下内容添加到RecentApps的清单文件中的<activity>定义中:
aandroid:taskAffinity=""

此外,在创建通知时,需要将FLAG_ACTIVITY_NEW_TASK添加到Intent中,格式如下:
Intent recentAppIntent = new Intent(getBaseContext(), RecentApps.class);
recentAppIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingrecentAppIntent = PendingIntent.getActivity(getBaseContext(), 1, recentAppIntent, 0);
notificationView.setOnClickPendingIntent(R.id.recentAppButt, pendingrecentAppIntent);

1
是的,它正常工作了。非常感谢,我无法表达我的幸福。再次感谢你。 - mostafa_fci
1
抱歉,我无法在 Stack Overflow 上投票赞成该答案,因为我是新手。 - mostafa_fci

2
我认为FLAG_ACTIVITY_CLEAR_TOP作为一个标志将会有所帮助。
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这里有意图标志的解释:链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接