【问题标题】:Using Trusted Web Activity to link multiple websites with native application使用 Trusted Web Activity 将多个网站与本机应用程序链接
【发布时间】:2020-06-26 16:43:25
【问题描述】:

我已经成功地将我的本地应用程序链接到一个网站,并在单击按钮时启动它。由于该网站是受信任的,因此 URL 栏不可见。在启动的网站中有一个按钮,然后进一步重定向到另一个网站。我为两者创建了一个数字资产链接,并在<websitename>/.well-known/<json-file> 中添加了 JSON 文件。

这两个网站也在strings.xml下被引用 asset_statements。但是,在启动第一个网站然后从第一个网站重定向到第二个网站时,第二个网站会作为常规的自定义 chrome 选项卡启动,并且 URL 栏可见。

是否可以隐藏两个 URL?如果有,怎么做?

【问题讨论】:

    标签: android-studio trusted-web-activity


    【解决方案1】:

    要启用多域,您需要检查 3 件事

    • 每个来源都有一个.well-known/assetlinks.json 文件
    • android asset_statements 包含所有来源
    • 在启动时告诉 Trusted Web Activity 其他来源。

    您似乎已经涵盖了前两点,但没有涵盖最后一点。

    使用支持库 LauncherActivity:

    如果使用库自带的 LauncherActivity,您可以通过更新 AndroidManifest 来提供额外的来源:

    1. 将其他来源列表添加到res/values/strings.xml
    <string-array name="additional_trusted_origins">
        <item>https://www.google.com</item>
    </string-array>
    
    1. 更新AndroidManifest.xml:
    <activity android:name="com.google.androidbrowserhelper.trusted.LauncherActivity"
        android:label="@string/app_name">
    
    
        <meta-data
            android:name="android.support.customtabs.trusted.ADDITIONAL_TRUSTED_ORIGINS"
            android:resource="@array/additional_trusted_origins" />
    
    
        ...
    </activity>
    

    使用自定义 LauncherActivity

    ​​>

    如果使用您自己的 LauncherActivity,使用其他来源启动可以这样实现:

    public void launcherWithMultipleOrigins(View view) {
      List<String> origins = Arrays.asList(
          "https://checkout.example.com/"
      );
    
    
      TrustedWebActivityIntentBuilder builder = new TrustedWebActivityIntentBuilder(LAUNCH_URI)
          .setAdditionalTrustedOrigins(origins);
    
    
      new TwaLauncher(this).launch(builder, null, null);
    }
    

    资源:

    【讨论】:

    • 请确认,如果只有在我们启动时才需要上述标签将网站作为我们的主要活动,在我们通过 MainActvity 按钮交互启动的场景中不需要?
    • 是的,这是必需的 - LauncherActivity 在应用程序从主屏幕启动时启动,其唯一目的是启动受信任的 Web 活动
    • 但是,如果我想首先启动应用程序并且仅在按钮单击布局期间我想启动 TWA,在这种情况下我不会添加 LauncherActivity 对吗?据我了解,当您在主屏幕上启动 TWA 时,会使用 Launcher 活动。
    • 对。那是“使用自定义 LauncherActivity”部分。这里有一个示例:github.com/GoogleChrome/android-browser-helper/blob/master/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多