测试Android DeepLinking报错:无法解析Intent启动Activity
排查Deep Link无法解析Intent的问题
问题原因分析
从错误日志和你的Manifest配置来看,核心问题有两处:
- Scheme大小写不匹配:错误日志里的Intent数据显示为
fooApp:///...(首字母大写),但你Manifest中配置的scheme是全小写的fooapp,Android的Intent scheme匹配区分大小写,这会导致系统无法定位到对应Activity。 - Host配置不合理:你在
<data>标签里设置了android:host="",这种配置无法正确匹配fooapp://这种不带host的URI格式——Android的intent-filter匹配规则中,指定空host时,系统会期望URI包含host部分(哪怕是空值),但fooapp://的格式无法触发该匹配。
解决方案
1. 统一Scheme大小写
确保测试命令的scheme和Manifest配置完全一致,使用全小写格式:
adb shell am start -W -a android.intent.action.VIEW -d "fooapp://"
2. 调整Manifest的Deep Link配置
修改<data>标签,移除多余的android:host=""属性,仅保留scheme即可匹配fooapp://格式的URI:
<!-- Deep Linking for fooapp:// --> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 仅保留scheme,匹配fooapp://格式的URI --> <data android:scheme="fooapp" /> </intent-filter>
3. 确保配置生效
修改Manifest后卸载并重新安装应用(避免旧配置缓存),再执行测试命令。若仍有问题,可通过以下命令查看应用已注册的Intent Filter,确认Deep Link配置是否正确:
adb shell dumpsys package your.package.name | grep -A 10 "Intent Filter"
内容的提问来源于stack exchange,提问作者Robert
相关产品推荐
相关产品推荐

