使用Safe Args创建DeepLink后跳转错误页面的技术咨询
解决Deeplink跳转错误页面的问题
针对你遇到的Deeplink跳转错误页面的问题,结合你提供的代码,从以下几个方面排查修复:
1. 修正Deeplink的URI格式
你当前的URI中包含多余的/?,这可能导致导航组件无法正确匹配目标页面。将URI修改为:
<deepLink android:id="@+id/deeplink" app:uri="example://receipt/payment?status={transactionStatus}&trace_id={traceNumber}" />
路径部分到payment即可,参数直接通过?拼接,不需要额外的斜杠分隔。
2. 验证参数类型匹配
你的transactionStatus是boolean类型,注意:
- 测试Deeplink时,
status参数必须传入小写的true或false字符串(如status=true),导航组件才能正确解析为boolean值; - 禁止传入非布尔值的参数内容,否则可能因解析失败触发错误跳转。
3. 检查导航图的匹配优先级
如果你的导航图中存在其他Deeplink,确保当前Deeplink的URI模式更具体,避免被更宽泛的URI优先匹配。例如,如果存在example://receipt/{page}这类模糊匹配的Deeplink,会优先于你当前的具体路径匹配,导致跳错页面。需将更具体的Deeplink放在导航图的靠前位置,或调整URI模式的唯一性。
4. 确认Manifest中的Intent Filter配置
确保目标页面所在Activity的Intent Filter正确匹配Deeplink的scheme、host和路径:
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="example" android:host="receipt" android:pathPrefix="/payment" /> </intent-filter>
pathPrefix需与Deeplink的路径部分一致,避免因路径不匹配导致跳转错误。
5. 用ADB命令测试Deeplink
使用ADB命令直接测试Deeplink,排除第三方应用或浏览器的解析问题:
adb shell am start -W -a android.intent.action.VIEW -d "example://receipt/payment?status=true&trace_id=abc123" com.your.package.name
替换com.your.package.name为你的应用包名,观察是否能正确跳转到目标页面。
内容的提问来源于stack exchange,提问作者Sajad Hosseini
相关产品推荐
相关产品推荐

