当我使用Android WebView
时,可以通过JS interface
调用以及JS Injection
调用在Web应用程序和本机之间进行通信。我想知道是否有任何方式可以在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>
当我在浏览器中调用
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")
}
}
}
非常感谢@Rahul指导我前进。
最佳答案
有一个很好的教程here,它显示了如何逐步创建它。
创建一个新的请求令牌
获取用户授权请求令牌
使用授权的请求令牌创建一个新的会话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"/>