Android API 33自定义Scheme深度链接无法正常工作求助
Android自定义Scheme扫码无法唤起应用的问题排查
你配置的自定义Scheme在ADB命令下正常触发应用,但扫码及浏览器打开时仅在Chrome中打开页面,可从以下几个方向排查:
1. 补充Android 12+的链接验证配置
从Android 12(API 31)开始,Chrome等主流浏览器会要求应用完成链接身份验证,才会唤起自定义Scheme的应用,需完成两步配置:
- 给
intent-filter添加android:autoVerify="true"属性:
<intent-filter android:label="Deep Link" android:autoVerify="true"> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="myapp" android:host="${applicationId}" android:pathPrefix="/story" /> </intent-filter>
- 在项目的
src/main/assets/.well-known/目录下创建assetlinks.json文件,填写对应应用的签名信息(替换package_name和sha256_cert_fingerprints):
[{ "relation": ["delegate_permission/common.handle_all_urls"], "target": { "namespace": "android_app", "package_name": "com.mycoolapp.debug", "sha256_cert_fingerprints": ["你的应用SHA256签名指纹"] } }]
签名指纹可通过以下命令获取:
keytool -list -v -keystore 你的签名文件路径 -alias 签名别名
2. 检查浏览器的链接处理规则
- 部分浏览器会对未验证的自定义Scheme直接拦截,或用户之前设置了默认用浏览器打开该类型链接。可进入浏览器设置,找到「应用」或「默认应用」选项,清除该链接的默认打开方式,重新选择你的应用。
- 如果扫码后是先打开网页再跳转自定义Scheme,需确保网页内的跳转是用户主动触发(比如点击按钮),Chrome会拦截页面加载时自动触发的Scheme跳转。
3. 确认扫码链接的匹配性
确保二维码中的链接完全符合配置的规则:
- Scheme必须为
myapp - Host必须是你的应用ID(如
com.mycoolapp.debug) - Path必须以
/story开头
4. 验证应用签名一致性
assetlinks.json中的SHA256指纹必须和当前安装的应用签名完全一致,debug包和release包的签名通常不同,需对应修改配置。
内容的提问来源于stack exchange,提问作者Abdelrhman Talat
相关产品推荐
相关产品推荐

