我需要<meta-data>包含应用链接吗?



我的Android应用程序链接功能直到我添加了元数据标签:才工作

<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements"/>

这是我在这里和这里读到的一个建议。然而,谷歌官方文件中并没有提到这一点。

所以。。。真的需要它吗?还是我做错了什么?

(当我提到应用程序链接不起作用时,我应该注意到深度链接起作用,但Android仍然显示"默认应用程序选择器对话框"(

更新#1:我正在安卓8.1上测试。我已经上传了.well-known/assetlinks.json文件。以下是我处理深层链接的活动:

<activity
android:name=".LinkDispatcherActivity"
<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:scheme="http" />
<data android:scheme="https" />
<data android:host="@string/www_app_domain" />
</intent-filter>
</activity>

当您使用该元标记时,Android将在安装时验证"所有权"。只有在你的清单中有了这个标签,你的应用程序才会在没有任何请求的情况下打开。我说的是你想打开哪个应用程序来处理你在清单中定义的url的选择器。

你可以检查这个命令来获得验证的结果,它可能会帮助你了解出了什么问题:

adb shell dumpsys package domain-preferred-apps

另请参阅相关文档:验证Android应用程序链接。

好吧,在@Michael回复后,我想我找到了原因。

该网站将http重定向到https流量。一旦我删除了<data android:scheme="http" />,我就可以对<meta-data>标签进行注释。事实上,在文件中他们提到

只有当系统在清单中为所有主机找到匹配的数字资产链接文件时,才会将您的应用程序建立为默认应用程序指定URL模式的处理程序。

我想这也适用于所有的"主机"one_answers"方案",即使包括<meta-data>也会覆盖该规则。

谢谢大家的回复。