Android Webview Открывает новые сеансы ChromeAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Android Webview Открывает новые сеансы Chrome

Сообщение Anonymous »

Я пытался создать учетную запись Google Auth для приложения веб-просмотра.
Это работает следующим образом:
  • пользователь нажимает на вход с помощью кнопки 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)
    }
    
так что Google Auth работает нормально, проблема в веб-приложения, основной домен/URL-адрес открывается только при запуске, после этого, куда бы я ни нажимал, он открывается в Chrome.
Вместо этого я хочу открыть все URL-адреса внутри домена mail/give внутри приложение WebView и все остальное в Chrome/браузере по умолчанию.
Я пробовал много способов, но все они работают, но для внешних ссылок открывается другой сеанс Chrome, в котором я не вижу ни одной из своих вошедших в систему учетных записей Google, а ссылки app:// не работают - поэтому даже если я введу свои учетные данные Google, они не будут перенаправляться обратно в приложение веб-просмотра.
Как я могу правильно использовать сеанс Chrome по умолчанию, запуская его из приложения веб-просмотра?

Подробнее здесь: https://stackoverflow.com/questions/792 ... e-sessions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»