我正在努力让App Links在我的Android应用上运行,但我无法弄清楚它为什么不起作用。
我已将以下intent-filter标记添加到我的Manifest文件中:
<activity android:name=".MyActivity">
<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="https"
android:host="www.mywebsite.com"
android:pathPattern="(/[a-z]{2}|)/foo/bar" />
</intent-filter>
<activity android:name=".MyActivity">
在MyActivity.java
我有:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
handleIntent(getIntent());
}
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent){
String appLinkAction = intent.getAction();
Uri appLinkData = intent.getData();
if (Intent.ACTION_VIEW.equals(appLinkAction) && appLinkData != null){
//Do something here
}
}
我还将自动生成的数字资产链接文件添加到我的网站。它在https://www.mywebsite.com/.well-known/assetlinks.json
以下验证链接也会检出:
https://digitalassetlinks.googleapis.com/v1/statements:list?source.web.site=https://www.mywebsite.com&relation=delegate_permission/common.handle_all_urls
我在运行Android 7.0的实际设备上安装了已签名的apk。 安装后,我可以在我的Web服务器的日志中看到设备成功获取assetlinks.json文件。
因此,运行adb shell dumpsys package d
会显示以下内容:
App linkages for user 0:
Package: com.myapp.myapp
Domains: www.mywebsite.com
Status: always : 20000001f
我使用链接https://www.mywebsite.com/foo/bar
向自己发送了一封电子邮件,它只是打开应用选择器对话框,甚至没有建议我的应用。它只显示浏览器选项。
点击maps.google.com
等链接会直接打开地图应用。这让我觉得这个问题与手机的设置无关。
我错过了什么?
答案 0 :(得分:0)
根据Android Studio“工具”标签下提供的“App Link Assistant”工具,托管assetlinks.json文件后,您需要在strings.xml文件中添加资产声明列表,然后将其链接到清单文件。 / p>
检查以下步骤 -
将资产声明添加到strings.xml
<string name="asset_statements">[{\n \"relation\": [\"delegate_permission/common.handle_all_urls\"],\n \"target\": {\n \"namespace\": \"web\",\n \"site\": \"https://bigakash.000webhostapp.com\",\n }\n}]</string>
将字符串链接到AndroidManifest.xml
<meta-data
android:name="asset_statements"
android:resource="@string/asset_statements" />
将autoVerify添加到intent filter元素。
我也浪费了太多时间来理解这个过程。