如何在android marshmallow上实现app链接?

Gan*_*dey 1 android applinks android-6.0-marshmallow

Android 6.0中的应用程序链接正在更改,因此Android可以更好地了解哪些应用程序可以直接打开内容,而不是每次都使用对话框停止用户.

我该如何实现它?

Gan*_*dey 7

好的是,App Links是Android Marshmallow 6.0上的新功能.它允许以一种开放网站链接的方式为您拥有的域名链接.

applinks需要满足两个条件:

  1. 添加<intent-filter>网址
  2. 验证域的所有权

确保您至少有1个带有intent过滤器的活动.

<activity ...>
    <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" android:host="www.domain.com"/>
        <data android:scheme="https" android:host="www.domain.com" />
    </intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)

意图过滤器的应用程序的链接必须声明android:scheme的值http,https或两者兼而有之.过滤器不得声明任何其他方案.过滤器还必须包含android.intent.action.VIEWandroid.intent.category.BROWSABLE类别名称.

不要忘记添加android:autoVerify="true"属性 <intent-filter>这将告诉系统在应用程序安装在设备上时启动域验证.

现在,要将您的网站与您的应用相关联,您需要在您的网站上添加Digital Asset Link JSON文件.您的网站根目录下的路径完全相同

https://www.domain.com/.well-known/assetlinks.json
Run Code Online (Sandbox Code Playgroud)

以下示例assetlinks.json文件将链接打开权限授予com.example Android app:

这是JSON文件的样子:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example",
    "sha256_cert_fingerprints":
    ["14:6D:E9:83:C5:73:06:50:D8:EE:B9:95:2F:34:FC:64:16:A0:83:42:E6:1D:BE:A8:8A:04:96:B2:3F:CF:44:E5"]
  }
}]
Run Code Online (Sandbox Code Playgroud)

只需要替换值"package_name":"sha256_cert_fingerprints": 保留其他原样.

确保您创建的文件可通过HTTPS协议访问

现在您可以测试应用程序,对于测试,您可以按照android开发者文档博客的说明进行操作