Jetpack Compose配置DeepLink异常:浏览器跳转仅显示谷歌搜索结果求助
DeepLink无法跳转至Android应用的解决方案
排查与修复步骤
确认Intent-Filter的放置位置
务必将<intent-filter>标签嵌套在目标Activity(如MainActivity)的<activity>标签内部,不能直接放在<application>标签下。错误的层级会导致系统无法识别应用对该DeepLink的处理权限。统一URI匹配规则
你的Compose路由中指定的uriPattern为"myapp://home/profile",但Manifest里使用了pathPrefix="/profile"。pathPrefix会匹配所有以/profile开头的路径(如/profile/123),若需精确匹配/profile,建议将Manifest中的pathPrefix改为path="/profile":<data android:host="home" android:scheme="myapp" android:path="/profile"/>保证URI规则完全对齐,避免匹配偏差。
用adb命令直接验证
部分浏览器会拦截自定义Scheme的DeepLink,建议通过adb命令跳过浏览器直接测试:adb shell am start -a android.intent.action.VIEW -d "myapp://home/profile"若命令能唤起应用并跳转到ProfileScreen,说明DeepLink配置有效,问题出在浏览器触发逻辑;若仍无法跳转,再排查其他配置项。
重置模拟器默认应用设置
若浏览器已将该DeepLink的默认打开方式设为搜索引擎,需清除默认设置:- 进入模拟器「设置」-「应用」- 找到你的应用
- 点击「默认打开方式」-「清除默认值」
再次点击DeepLink时,选择你的应用并勾选「始终」即可。
验证NavHost配置
确保NavHost已正确初始化,且包含该composable路由。同时确认Screens.Auth.route的定义无错误,DeepLink关联的路由能被NavController正确识别导航。
内容的提问来源于stack exchange,提问作者Alex Bro
相关产品推荐
相关产品推荐

