我的应用程序定义了意图过滤器,用于处理由我的网站定义的URL。
<intent-filter 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:host="www.host.com" android:scheme="http"/>
</intent-filter>
<intent-filter 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:host="www.host.com" android:scheme="https"/>
</intent-filter>
此应用程序能够正确检测到来自正确主机的URL,但会询问用户是在应用程序中打开还是在浏览器中打开。我尝试使用此处指定的应用链接验证:https://developer.android.com/training/app-links/index.html
从我的服务器日志中可以看到,在安装应用程序时,设备会查询 /well-known/assetlinks.json,并响应200状态。使用以下数字资产文件进行测试:
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://<domain1>:<port>&relation=delegate_permission/common.handle_all_urls
API发现没有错误。
assetlinks.json文件中的SHA256是使用以下方式获得的:
keytool -list -v -keystore my-release-key.keystore
应该使用与应用签名相同的 .keystore 文件。
运行 adb shell dumpsys package d
命令,返回链接验证状态为“询问”,表示验证失败。为什么验证会失败呢?