似乎无法在新的 Jetpack 导航库中处理带有查询参数的深层链接。如果您将以下内容放入 navigation.xml:
<deepLink app:uri="scheme://host/path?query1={query_value}" />
那么深度链接不会打开片段。
经过一番挖掘,我发现罪魁祸首可能在 NavDeepLink 中,因为它将 url 从 xml 转换为 Pattern 正则表达式。看起来问题是一个没有被排除的问号。
我写了一个失败的测试:
@Test
fun test() {
val navDeepLink = NavDeepLink("scheme://host/path?query1={query_value}")
val deepLink = Uri.parse("scheme://host/path?query1=foo_bar")
assertEquals(true, navDeepLink.matches(deepLink))
}
为了使测试通过,我所要做的就是逃避?如下:
@Test
fun test() {
val navDeepLink = NavDeepLink("scheme://host/path\\?query1={query_value}")
val deepLink = Uri.parse("scheme://host/path?query1=foo_bar")
assertEquals(true, navDeepLink.matches(deepLink))
}
我是否遗漏了一些非常基本的东西来将查询值传递给我的片段,还是目前不支持此功能?