Android 应用链接失效,是因为注释吗?

Android App Links not working, is it because of Annotations?

我是 Android 的新手,仍在学习中,我有一个使用 Android 注释的项目,想实现 App Links。

我阅读了文档 (here),甚至在 Whosebug 上阅读了一些问题。

根据文档,Manifest 中的 intent-filter 是:

<intent-filter android:autoVerify="true">
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http" android:host="real.host.here" />
            <data android:scheme="https" android:host="real.host.here" />
</intent-filter>

意图在activity中,与我找到的所有示例唯一不同的是我的activity是这样的:

<activity
    android:name=".activities.MainActivity_" ...>
    <intent-filter...>...</intent-filter>
</activity>

由于Android注解,名称是“.MainActivity_”,而不是"MainActivity"。

除此之外,托管的 assetlinks.json 可通过 HTTPS 连接访问,这是我的文件:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.my.package.name",
    "sha256_cert_fingerprints":["32:D9:9E:17:2E:C7:B4:82:12:96:C8:3E:D1:51:56:3F:7C:ED:97:69:F9:4A:39:54:4C:7B:AD:8A:AD:27:8F:45"]
  }
}]

SHA256 指纹来自我用于构建应用程序发布版本的证书。

我已经使用 Statement List Generator and Tester 工具进行了测试,结果是成功的。

为了确定,我总是使用签名的 apk 进行测试,phone 我正在测试它是 Android 6.0.

当我用这个

确认数字资产link文件时
https://digitalassetlinks.googleapis.com/v1/statements:list?
source.web.site=https://<domain1>:<port>&
relation=delegate_permission/common.handle_all_urls

我收到这条消息:

... "debugString": "********************* ERRORS *********************\nNone!\ ...

但是当我尝试这个命令时

adb shell am start -a android.intent.action.VIEW \
-c android.intent.category.BROWSABLE \
-d "http://<domain1>:<port>"

它打开浏览器,而不是应用程序。

我真的很想知道这里可能出了什么问题。

我发现了我自己的问题。

首先我发现在intent-filter,

里面
<action android:name="android.intent.category.DEFAULT" />
<action android:name="android.intent.category.BROWSABLE" />

应该是

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

但即使在那之后,它也没有用。所以我找到了真正的问题。

看这里:

<data android:scheme="http" android:host="real.host.here" />
<data android:scheme="https" android:host="real.host.here" />

问题是,我的主机只提供 HTTPS 协议,我的网站没有 HTTP。在我删除 "http" 数据线后,它就像一个魅力。使用AndroidAnnotations没有问题。