首页 > 解决方案 > 具有单一活动架构的android意图过滤器

问题描述

我目前正在开发一个应用程序,我希望能够将图像共享到我的应用程序。

对于多个活动,这似乎不是问题,因为您将活动定义为意图接收器。但是,我将如何做到这一点,谷歌正在推动其导航 API 的单一活动架构?

是否应该由单个主要活动处理它,或者在这种情况下创建第二个活动是否有意义。

我在 android 开发文档中找不到关于该主题的任何内容

标签: androidandroid-fragmentsintentfilter

解决方案


将 Uri 传递给您的 navController,而不是通过片段 ID 手动导航。

val deeplink = Uri.parse("android-app://androidx.navigation.app/yourFragmentId")
findNavController().navigate(deeplink)

与使用操作或目标 ID 的导航不同,您可以导航到图表中的任何 URI,而不管目标是否可见。您可以导航到当前图表上的目的地或完全不同图表上的目的地。

使用 URI 导航时,不会重置返回堆栈。这与其他深层链接导航不同,后者在导航时会替换后退堆栈。然而,popUpTo 和 popUpToInclusive 仍然从后台堆栈中删除目的地,就像您使用 ID 导航一样。


推荐阅读