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

Saz*_*han 5 javascript android webview google-chrome-extension chrome-custom-tabs

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

我知道出于安全原因,Google 没有在CCT和中添加桥接功能TWA。但在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>
Run Code Online (Sandbox Code Playgroud)

当我abc://abc.oauth.com在浏览器中调用时,它不会打开我的活动。它打开谷歌搜索。

更新2

最后我成功地使用下面的代码获取了查询参数键/值,

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")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢@Rahul 继续指导我。

Rah*_*ana 2

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

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

整个事情背后的主要思想是具有可浏览类别的意图过滤器,每当调用重定向 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"/>
Run Code Online (Sandbox Code Playgroud)