本机应用程序与 Chrome 自定义选项卡 (CCT) 之间的通信

Communication between Native App and Chrome Custom Tab (CCT)

当我使用 Android WebView 时,可以通过 JS interface 调用和 JS Injection 调用在网络应用程序和本机应用程序之间进行通信。我想知道 Android 本机应用程序和 Chrome Custom Tab (CCT) 之间是否有任何解决方法可以通过任何方式进行通信?

我知道出于安全原因 Google 没有在 CCTTWA 中添加桥接功能。但是在Google I/O中,他们声明Web/Native bridging的方式有限(参考下图)。我想知道有哪些方法以及在哪里可以找到有关这些有限桥接的指南?

更新 1

<activity android:name=".activities.MyResultActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="abc"
            android:host="abc.oauth.com" />
    </intent-filter>
</activity>

当我在浏览器中调用 abc://abc.oauth.com 时,它没有打开我的 activity。其开google搜索。

更新 2

最后我用下面的代码成功得到了查询参数key/value,

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    Log.d(classTag, "MyResultActivity activity is called")

    intent?.data?.let {

        for (key in it.queryParameterNames) {
            val value = it.getQueryParameter(key)
            Log.d(classTag, "MyResultActivity param key: $key, value: $value")
        }
    }
}

非常感谢@Rahul 对我的指导。

有一个很好的教程 here,它展示了如何逐步创建它。

  1. 创建一个新的请求令牌
  2. 获取用户授权请求token
  3. 使用授权的请求令牌创建一个新的会话 ID

整个事情背后的主要思想是 Intent-Filters with category browseable,每当调用重定向 URL 时都会调用它。

<intent-filter android:label="@string/filter_view_http_gizmos">
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

<data 
   android:host="callback_param"
   android:scheme="anything"/>