Android应用链接不起作用

时间:2017-10-30 18:47:56

标签: android deep-linking

我正在努力让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等链接会直接打开地图应用。这让我觉得这个问题与手机的设置无关。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

根据Android Studio“工具”标签下提供的“App Link Assistant”工具,托管assetlinks.json文件后,您需要在strings.xml文件中添加资产声明列表,然后将其链接到清单文件。 / p>

检查以下步骤 -

  1. 将资产声明添加到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>
    
  2. 将字符串链接到AndroidManifest.xml

    <meta-data
        android:name="asset_statements"
        android:resource="@string/asset_statements" />
    
  3. 将autoVerify添加到intent filter元素。

  4. 我也浪费了太多时间来理解这个过程。