通过意图过滤器启动时,应用程序不会显示在“最近”屏幕中

Posted

技术标签:

【中文标题】通过意图过滤器启动时,应用程序不会显示在“最近”屏幕中【英文标题】:App doesn't show in Recents Screen when launched via an intent-filter 【发布时间】:2020-10-10 20:47:01 【问题描述】:

我正在尝试通过链接到 pdf 文件的意图过滤器启动我的应用程序(解析 pdf 文件并将获取的数据存储到数据库中)。每当我正常启动应用程序时,它都会显示在“最近”屏幕中。 但是,如果我从另一个应用程序使用 View Intent/Action,它仍会按预期运行,但不会在“最近”屏幕中显示为自己的页面。相反,选择 pdf 文件的应用程序将显示在标题和应用程序图标中,无论如何都会在“最近屏幕”页面中显示我自己的应用程序的屏幕截图。

我已经尝试删除清单文件中的 android:label 并且我没有设置 android:excludeFromRecents 属性。

还有哪些其他情况可能导致所描述的行为?

【问题讨论】:

【参考方案1】:

还有哪些其他情况可能导致所描述的行为?

这是完全正常的行为。默认情况下,启动的活动与启动它的活动进入相同的任务(“最近屏幕中的页面”)。这类似于选项卡式 Web 浏览器的工作方式:链接通常会在与包含链接的页面相同的选项卡中打开一个页面。

您看到不同的行为是因为有人采取措施改变了行为:

启动你的活动可以添加标志来控制任务行为,例如FLAG_ACTIVITY_NEW_TASK

您的活动可以具有控制任务行为的清单属性,例如taskAffinityallowTaskReparentinglaunchMode 等。

请参阅the documentation 了解更多信息。

【讨论】:

感谢您的快速回答!在您的帮助下,我能够找出解决方案。我通过将 android:launchMode="singleTask" 添加到清单文件中的活动来解决了这个问题。

以上是关于通过意图过滤器启动时,应用程序不会显示在“最近”屏幕中的主要内容,如果未能解决你的问题,请参考以下文章

活动重新创建意图附加内容为空

API Guide:APP组件-意图和意图过滤器

从概览屏幕恢复应用时未调用 onActivityResult(最近)

隐式意图&显示意图

活动必须导出或包含意图过滤器

黑屏显示而不是 LaunchScreen.xib