3

我正在探索受信任的 Web 活动概念并尝试像这样启动它 -

final CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
final CustomTabsIntent customTabsIntent = builder.build();    
customTabsIntent.intent.putExtra(TrustedWebUtils.EXTRA_LAUNCH_AS_TRUSTED_WEB_ACTIVITY, true);
customTabsIntent.launchUrl(activity, Uri.parse(wrappedTargetUrl));

我在这里使用了谷歌的资产链接生成器并针对域进行了测试。它显示成功的链接。另外,我正在使用来自 Playstore 的正确应用签名密钥。尽管如此,它并没有为我隐藏 URL 栏。我已经查看并尝试了 StackOverflow 上的所有可用选项,但仍然没有运气。

4

1 回答 1

0

要删除受信任的 Web 活动的 URL 栏,它需要 Android 应用程序和网站之间的关联。该关联必须以两种方式建立,即从应用程序链接到网站以及从网站链接到应用程序

建立从应用程序到网站的关联

1.添加如下asset_statements字符串app>res>values>strings.xml并更改站点属性的内容以匹配受信任的 Web 活动打开的架构和域:

<resources>
    <string name="asset_statements">
        [{
            \"relation\": [\"delegate_permission/common.handle_all_urls\"],
            \"target\": {
                \"namespace\": \"web\",
                \"site\": \"https://my.site.com\"}
        }]
    </string>
</resources>

2.将上述内容添加到您的asset_statementsAndroidManifest.xml 中,如下所示,并在您的 Launcher Activity 中设置正确:meta-dataapplicationdata scheme and host

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.my.application">

    <application>

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

        <activity android:name=".LauncherActivity">
           <intent-filter>
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>

           <!--
             This intent-filter allows the Trusted Web Activity to handle Intents to open the app
           -->
          <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"/>

            <!-- To handle links to the target URL-->
            <data
                android:scheme="https"
                android:host="my.site.com"/>
          </intent-filter>
       </activity>

    </application>
</manifest>

建立从网站到应用程序的关联

您必须assetlinks.json在路径下将文件上传到您的网站:https://my.site.com/.well-known/assetlinks.jsonassetlinks.json 应如下所示:

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.example.my.application",
    "sha256_cert_fingerprints":
    ["5B:49:F7:CB:BL:C8:6K:CJ:5F:D8:33:2A:DA:FA:71:18:88:N9:49:9C:D3:66:98:35:B4:A2:2C:EC:B9:65:6C:65"]
  }
}]

从上面的文件中,您必须设置正确的包名称和正确的SHA-256 指纹(密钥库签名哈希)。

有一种简单的方法可以assetlinks.json file从 Android Studio 生成上述和上述哈希。您必须转到 Android StudioTools > App Links Assistant并单击Open Digital Asset Links File Generator并添加您的站点域、应用程序包名称并选择您的发布密钥库文件,如下所示,然后单击Generate Digital Asset Links file按钮生成assetlinks.json可以上传到站点的文件。还有一个非常有用的链接,描述了关联将您的应用与您的网站关联

数字资产链接

要验证链接是否正确,有一个Link and Verify按钮来验证从网站到应用程序的关联是否正确,如下图示例所示:

链接验证

如果上传到站点的 Sha256 用于发布密钥库,则在上述步骤之后,您必须生成一个发布 apk 文件,现在如果打开该文件,您应该会看到 Header Url Bar 已成功删除。我已经测试了上述步骤,它按预期工作。

注意: 如果您选择让 Google Play 使用他们生成的密钥对您的版本进行签名,您只需在Google Play 控制台 -> 设置 -> 应用完整性下复制应用签名密钥证书 SHA-256 指纹并将其放入资产链接.json 文件。

于 2021-08-05T10:58:41.350 回答