You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Compose Deep Link导航:同URL不同参数跳转异常咨询

解决方案

1. 启用精确匹配(推荐)

问题核心是Navigation组件默认允许URL路径匹配时忽略query参数,导致不带参数的基础URL误匹配到DETAILS页面。为DETAILS的Deep Link添加isExact = true配置,强制只有完全匹配包含指定query参数的URL才会触发该页面。修改后代码如下:

composable(
    route = StatusRouteNavigation.STATUS_LANDING,
    deepLinks = listOf(
        navDeepLink {
            uriPattern = "${BuildConfig.DOMAIN_URL}us/en/manage/status.html"
        }
    )
)

composable(
    route = StatusRouteNavigation.DETAILS,
    deepLinks = listOf(
        navDeepLink {
            uriPattern = "${BuildConfig.DOMAIN_URL}us/en/manage/status.html?page=de&no={number}&on={date}"
            isExact = true // 仅匹配包含完整query参数的URL
        }
    )
)

2. 确保注册顺序合理性

Navigation组件会按注册顺序匹配Deep Link,同时优先识别更具特异性的模式。保持通用的STATUS_LANDING页面先注册,再注册带参数的DETAILS页面,可进一步避免匹配歧义(配合isExact使用后,顺序影响会被弱化)。

原理说明

默认状态下,Navigation的Deep Link匹配仅校验URL路径部分,忽略query参数的存在与否。通过isExact = true,可以要求URL必须与uriPattern完全一致(包括query参数的键值对),从而实现精准的页面跳转匹配。

内容的提问来源于stack exchange,提问作者pepperlove

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 11:50:10