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
相关产品推荐
相关产品推荐

