Связь между собственным приложением и пользовательской вкладкой Chrome (CCT) - PullRequest
0 голосов
/ 11 июля 2019

Когда я использую Android WebView, существуют способы связи между веб-приложением и нативным с помощью вызова JS interface и вызова JS Injection.Интересно, есть ли какой-нибудь способ взаимодействия между нативным приложением Android и Chrome Custom Tab (CCT) каким-либо образом?

Я знаю, что по соображениям безопасности Google не добавила функцию моста в CCT и TWA.Но в Google I / O они объявили, что существуют ограниченные способы Web/Native bridging (см. Рисунок ниже).Интересно, как и где я могу найти рекомендации относительно этих ограниченных мостов?

image

Обновление 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 в браузере это не открывает мою деятельность.Его открытие в поиске Google.

Обновление 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 за руководство.

1 Ответ

1 голос
/ 11 июля 2019

Здесь есть хороший учебник , в котором показано, как создать его шаг за шагом.

  1. Создание нового токена запроса
  2. Попросите пользователя авторизоватьсятокен запроса
  3. Создать новый идентификатор сеанса с авторизованным токеном запроса

Основная идея всего этого - 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"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...