Это работает следующим образом:
- пользователь нажимает на вход с помощью кнопки Google в приложении откроется браузер по умолчанию/браузер Chrome, в котором будут показаны все авторизованные учетные записи Google для входа в систему.
- пользователь выбирает учетную запись, продолжает и используя ссылку App://, я могу перенаправить пользователя обратно в свое приложение, а также прочитать параметры URL-адреса. прошло.
пакет com.webviewtemplate.webviewtemplate
импорт android.annotation.SuppressLint
импорт android.app.Activity
импортировать android.os.Build
импортировать android.os.Bundle
импортировать android.webkit.WebView
импортировать android.window.OnBackInvokedDispatcher
import com.webviewtemplate.webviewtemplate.databinding.ActivityMainBinding
class MainActivity : Activity() {
// URL-адрес веб-страницы для загрузки
private val applicationUrl = "https://fieldops.testurl.com/app.html"Код: Выделить всё
private lateinit var binding: ActivityMainBinding private lateinit var webView: WebView @SuppressLint("SetJavaScriptEnabled") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) webView = binding.webView // Handle the intent and extract query parameters if present val intent = intent val data = intent.data var targetUrl = applicationUrl if (data != null && data.scheme == "myapp") { // Extract the 'code' parameter from the incoming intent val code = data.getQueryParameter("code") if (!code.isNullOrEmpty()) { // Append the code to the application URL as a query parameter targetUrl = "$applicationUrl?code=$code" } } // Enable necessary WebView settings webView.settings.domStorageEnabled = true webView.settings.javaScriptEnabled = true // Handle back navigation for WebView if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { onBackInvokedDispatcher.registerOnBackInvokedCallback( OnBackInvokedDispatcher.PRIORITY_DEFAULT ) { if (webView.canGoBack()) { webView.goBack() } else { finish() } } } // Load the target URL into the WebView webView.loadUrl(targetUrl) }
Вместо этого я хочу открыть все URL-адреса внутри домена mail/give внутри приложение WebView и все остальное в Chrome/браузере по умолчанию.
Я пробовал много способов, но все они работают, но для внешних ссылок открывается другой сеанс Chrome, в котором я не вижу ни одной из своих вошедших в систему учетных записей Google, а ссылки app:// не работают - поэтому даже если я введу свои учетные данные Google, они не будут перенаправляться обратно в приложение веб-просмотра.
Как я могу правильно использовать сеанс Chrome по умолчанию, запуская его из приложения веб-просмотра?
Подробнее здесь: https://stackoverflow.com/questions/792 ... e-sessions
Мобильная версия