Google-Вход не работает в Android WebViewAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Google-Вход не работает в Android WebView

Сообщение Anonymous »

Я реализую приложение WebView для Android, используя свое мобильное адаптивное веб-приложение.
Все работает нормально, но вход в Google не работает должным образом. Иногда приложение открывает окно браузера, а иногда нет. Я пробовал реализовать пользовательские вкладки Chrome, открыть окно входа во внешний браузер (Chrome) и все другие решения, доступные здесь.
Все доступные здесь решения, я попробовал их все, но они не работают.
Вход в Google для Android не работает в WebView
Наложение WebView поверх другого
Вход в Google в Android не работает webview
Вход в Google не работает. Android Webview
MainActivity.kt
`
class MainActivity : AppCompatActivity() {< /p>

Код: Выделить всё

private lateinit var binding: ActivityMainBinding
private lateinit var networkReceiver: BroadcastReceiver
private var webView: WebView? = null

@SuppressLint("SetJavaScriptEnabled")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

initNetworkReceiver()
if (!isInternetAvailable(this)) {
binding.ivInternetStatus.visibility = View.VISIBLE
} else {
initWebView()
}

onBackPressedDispatcher.addCallback {
if (webView?.canGoBack() == true) {
webView?.goBack()
} else {
finish()
}
}
}

private fun initNetworkReceiver() {
networkReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (isInternetAvailable(context)) {
if (webView == null) {
initWebView()
} else {
webView?.reload()
}
binding.ivInternetStatus.visibility = View.GONE
} else {
binding.ivInternetStatus.visibility = View.VISIBLE
}
}
}

val intentFilter = IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
registerReceiver(networkReceiver, intentFilter)
}

inner class SeekrWebViewClient: WebViewClient() {

override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {

val url = parse(request?.url.toString())

if(url.host == "seekrapp.in") {
return false
}

if(url.host == "accounts.google.com" || url.toString().contains("oauth2") || url.toString().contains("oauthchooseaccount")) {
return false
}

val intent = Intent(Intent.ACTION_VIEW, parse(request?.url.toString()))
startActivity(intent)
return true

}

}

@SuppressLint("SetJavaScriptEnabled")
private fun initWebView() {
webView = WebView(this)
webView?.settings?.apply {
javaScriptEnabled = true
domStorageEnabled = true
allowFileAccess = true
allowContentAccess = true
mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
cacheMode = WebSettings.LOAD_DEFAULT
databaseEnabled = true
setSupportMultipleWindows(true)
javaScriptCanOpenWindowsAutomatically = true
userAgentString = "Mozilla/5.0 (Linux; Android 4.1.1; Galaxy Nexus Build/JRO03C) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19"

// WebView Tweaks
layoutAlgorithm = WebSettings.LayoutAlgorithm.NORMAL;
useWideViewPort = true;
}
webView?.webViewClient = SeekrWebViewClient()
webView?.loadUrl("http://seekrapp.in")
setContentView(webView)
}

private fun isInternetAvailable(context: Context): Boolean {
val connectivityManager = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val network = connectivityManager.activeNetwork ?: return false
val activeNetwork = connectivityManager.getNetworkCapabilities(network) ?: return false
return when {
activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> true
activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> true
activeNetwork.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> true
else -> false
}
}

override fun onDestroy() {
super.onDestroy()
unregisterReceiver(networkReceiver)
}
}`
AndroidManifext.xml
`
`
Возможно, созданное веб-приложение использует какие-то другие методы для подписи Google.
Кроме того, веб-приложение использует GCP для получения пользователь вошел в систему с помощью идентификатора Google.
Помогите мне, предоставив какое-либо решение для этой проблемы.
Все подробности приведены выше.

Подробнее здесь: https://stackoverflow.com/questions/790 ... id-webview
Ответить

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

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

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

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

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