Ссылки на приложения для Android не работают с пользовательскими вкладками Chrome

У меня есть приложение, которое использует ссылки приложений для входа в браузер вне приложения и перенаправляется обратно после завершения входа. Это отлично работает с собственными браузерами Android, но не работает, когда я использую пользовательские вкладки Chrome. Пользователь входит в настраиваемые вкладки и не перенаправляется обратно в приложение, поэтому мне интересно, можно ли использовать ссылки на приложения с настраиваемыми вкладками так же, как и в родных браузерах?

конфигурация манифеста

<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />

<data
    android:host="my-host"
    android:scheme="https" />

working implementation in native browsers

val intent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
ContextCompat.startActivity(context, intent, null)

сбой перенаправления с использованием пользовательских вкладок Chrome

val customTabsIntent = CustomTabsIntent.Builder()
    .build()

customTabsIntent.launchUrl(context, Uri.parse(url))

person user1552050    schedule 09.07.2018    source источник
comment
У меня точно такая же проблема. Вы можете попробовать определить путь исправления после uri вашего хоста, это может сработать: my-host/redirect.   -  person MalikDe    schedule 03.10.2018
comment
Какую версию зависимостей вы используете для пользовательских вкладок Chrome? com.android.support:пользовательские вкладки   -  person João Zão    schedule 09.01.2019
comment
Вы нашли решение?   -  person Rezo Shalikashvili    schedule 17.04.2020


Ответы (1)


Поскольку ваш URL-адрес прямой ссылки похож на URL-адрес веб-сайта, пользовательская вкладка Chrome всегда будет пытаться загрузить его как веб-страницу вместо перенаправления. Что вы можете сделать, так это использовать схему, обычно не поддерживаемую браузером, например app-name://, тогда ваш хост может быть redirect-to, так что это будет выглядеть так:

 <data
  android:host="redirect-to"
  android:scheme="app-name" />

Таким образом, только ваше приложение будет разрешать этот URL-адрес. Но обратите внимание, что когда вы используете этот тип URL-адреса, он может не отображаться как ссылка в некоторых приложениях, таких как электронная почта.

person Smile    schedule 09.07.2018
comment
Спасибо за ответ, но это не сработает в моем сценарии. В настоящее время я делаю следующее: 1. Открываю URL-адрес для входа из веб-просмотра в браузере Chrome. 2. После завершения входа в систему меня перенаправляют обратно на мой единственный хост веб-просмотра от стороннего поставщика с токеном аутентификации, который всегда перенаправляет на my-host/auth-token после того, как я изменил схему https, он никогда не будет открыт в моем родном приложении. И это работает, как и ожидалось, просто не работает, когда я заменяю браузер Chrome на пользовательские вкладки. - person user1552050; 11.07.2018
comment
это отличный намек, я боролся с этим. изменил мою схему на идентификатор приложения (com.company.appname). также обновлен URL-адрес перенаправления в keycloak. и это сработало. - person Developine; 26.08.2020