|
@@ -2,12 +2,19 @@ package io.legado.app.ui.login
|
|
|
|
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.annotation.SuppressLint
|
|
|
import android.graphics.Bitmap
|
|
import android.graphics.Bitmap
|
|
|
|
|
+import android.net.Uri
|
|
|
import android.net.http.SslError
|
|
import android.net.http.SslError
|
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
|
import android.view.Menu
|
|
import android.view.Menu
|
|
|
import android.view.MenuItem
|
|
import android.view.MenuItem
|
|
|
import android.view.View
|
|
import android.view.View
|
|
|
-import android.webkit.*
|
|
|
|
|
|
|
+import android.webkit.CookieManager
|
|
|
|
|
+import android.webkit.SslErrorHandler
|
|
|
|
|
+import android.webkit.WebChromeClient
|
|
|
|
|
+import android.webkit.WebResourceRequest
|
|
|
|
|
+import android.webkit.WebSettings
|
|
|
|
|
+import android.webkit.WebView
|
|
|
|
|
+import android.webkit.WebViewClient
|
|
|
import androidx.fragment.app.activityViewModels
|
|
import androidx.fragment.app.activityViewModels
|
|
|
import io.legado.app.R
|
|
import io.legado.app.R
|
|
|
import io.legado.app.base.BaseFragment
|
|
import io.legado.app.base.BaseFragment
|
|
@@ -16,8 +23,10 @@ import io.legado.app.data.entities.BaseSource
|
|
|
import io.legado.app.databinding.FragmentWebViewLoginBinding
|
|
import io.legado.app.databinding.FragmentWebViewLoginBinding
|
|
|
import io.legado.app.help.http.CookieStore
|
|
import io.legado.app.help.http.CookieStore
|
|
|
import io.legado.app.lib.theme.accentColor
|
|
import io.legado.app.lib.theme.accentColor
|
|
|
-import io.legado.app.utils.gone
|
|
|
|
|
import io.legado.app.utils.NetworkUtils
|
|
import io.legado.app.utils.NetworkUtils
|
|
|
|
|
+import io.legado.app.utils.gone
|
|
|
|
|
+import io.legado.app.utils.longSnackbar
|
|
|
|
|
+import io.legado.app.utils.openUrl
|
|
|
import io.legado.app.utils.snackbar
|
|
import io.legado.app.utils.snackbar
|
|
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
|
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
|
|
|
|
|
|
@@ -89,6 +98,33 @@ class WebViewLoginFragment : BaseFragment(R.layout.fragment_web_view_login) {
|
|
|
super.onPageFinished(view, url)
|
|
super.onPageFinished(view, url)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ override fun shouldOverrideUrlLoading(
|
|
|
|
|
+ view: WebView,
|
|
|
|
|
+ request: WebResourceRequest
|
|
|
|
|
+ ): Boolean {
|
|
|
|
|
+ return shouldOverrideUrlLoading(request.url)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
|
|
|
|
|
+ override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
|
|
|
|
|
+ return shouldOverrideUrlLoading(Uri.parse(url))
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private fun shouldOverrideUrlLoading(url: Uri): Boolean {
|
|
|
|
|
+ when (url.scheme) {
|
|
|
|
|
+ "http", "https" -> {
|
|
|
|
|
+ return false
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ else -> {
|
|
|
|
|
+ binding.root.longSnackbar(R.string.jump_to_another_app, R.string.confirm) {
|
|
|
|
|
+ context?.openUrl(url)
|
|
|
|
|
+ }
|
|
|
|
|
+ return true
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@SuppressLint("WebViewClientOnReceivedSslError")
|
|
@SuppressLint("WebViewClientOnReceivedSslError")
|
|
|
override fun onReceivedSslError(
|
|
override fun onReceivedSslError(
|
|
|
view: WebView?,
|
|
view: WebView?,
|