javascript - Native App 和 Chrome Custom Tab (CCT) 之间的通信

标签 javascript android google-chrome-extension webview chrome-custom-tabs

当我使用 Android WebView 时,有多种方法可以通过 JS interface 调用以及 JS Injection 调用在 web-app 和 native 之间进行通信.我想知道是否有任何解决方法可以通过任何方式在 Android 原生应用和 Chrome 自定义标签 (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 。它的开放谷歌搜索。

更新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")
        }
    }
}

非常感谢@Rahul 指导我前进。

最佳答案

有一个很好的教程here其中显示了如何逐步创建它。

  1. 创建一个新的请求 token
  2. 让用户授权请求 token
  3. 使用授权的请求 token 创建一个新的 session ID

整个事情背后的主要思想是Intent-Filters与类别 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"/>

关于javascript - Native App 和 Chrome Custom Tab (CCT) 之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56981955/

相关文章:

google-chrome-extension - 使用Chrome Identity API获取id_token

Javascript Canvas 游戏重置错误,绘制失败

javascript - 如何禁用带逗号的 UglifyJS 链接声明。我不能使用断点

java - 如何在 Android 中保存数据?

java - 无法启动Activity(包含 fragment 间通信)

javascript - chrome 内容脚本 : window. postMessage() "message"事件不包含 "source"属性

javascript - 将 Mixpanel 与 Chrome 扩展集成(无浏览器操作)

javascript - 在 JavaScript 中美化/去除空白

javascript - 如何获取ID和更改背景

android - 将 Intent 传递给另一个 Android 应用程序