优化
This commit is contained in:
@@ -11,8 +11,6 @@ import android.view.View
|
||||
import android.webkit.*
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.size
|
||||
import androidx.webkit.WebSettingsCompat
|
||||
import androidx.webkit.WebViewFeature
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
import io.legado.app.constant.AppConst
|
||||
@@ -87,6 +85,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
||||
binding.webView.webChromeClient = CustomWebChromeClient()
|
||||
binding.webView.webViewClient = CustomWebViewClient()
|
||||
binding.webView.settings.apply {
|
||||
setDarkeningAllowed(AppConfig.isNightTheme)
|
||||
mixedContentMode = WebSettings.MIXED_CONTENT_ALWAYS_ALLOW
|
||||
domStorageEnabled = true
|
||||
allowContentAccess = true
|
||||
@@ -100,7 +99,6 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
||||
val cookieManager = CookieManager.getInstance()
|
||||
cookieManager.setCookie(url, CookieStore.getCookie(url))
|
||||
binding.webView.addJavascriptInterface(this, "app")
|
||||
upWebViewTheme()
|
||||
binding.webView.setOnLongClickListener {
|
||||
val hitTestResult = binding.webView.hitTestResult
|
||||
if (hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE ||
|
||||
@@ -122,25 +120,6 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun upWebViewTheme() {
|
||||
if (AppConfig.isNightTheme) {
|
||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
|
||||
@Suppress("DEPRECATION")
|
||||
WebSettingsCompat.setForceDarkStrategy(
|
||||
binding.webView.settings,
|
||||
WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING
|
||||
)
|
||||
}
|
||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
||||
@Suppress("DEPRECATION")
|
||||
WebSettingsCompat.setForceDark(
|
||||
binding.webView.settings,
|
||||
WebSettingsCompat.FORCE_DARK_ON
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveImage(webPic: String) {
|
||||
this.webPic = webPic
|
||||
val path = ACache.get().getAsString(imagePathKey)
|
||||
@@ -227,8 +206,7 @@ class WebViewActivity : VMBaseActivity<ActivityWebViewBinding, WebViewModel>() {
|
||||
return true
|
||||
}
|
||||
|
||||
@Deprecated("Deprecated in Java")
|
||||
@Suppress("DEPRECATION")
|
||||
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
|
||||
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
|
||||
url?.let {
|
||||
return shouldOverrideUrlLoading(Uri.parse(it))
|
||||
|
||||
@@ -4,14 +4,11 @@ import android.annotation.SuppressLint
|
||||
import android.content.pm.ActivityInfo
|
||||
import android.content.res.Configuration
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.*
|
||||
import android.webkit.*
|
||||
import androidx.activity.viewModels
|
||||
import androidx.core.view.size
|
||||
import androidx.webkit.WebSettingsCompat
|
||||
import androidx.webkit.WebViewFeature
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.VMBaseActivity
|
||||
import io.legado.app.constant.AppConst
|
||||
@@ -128,9 +125,9 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
||||
domStorageEnabled = true
|
||||
allowContentAccess = true
|
||||
builtInZoomControls = true
|
||||
setDarkeningAllowed(AppConfig.isNightTheme)
|
||||
}
|
||||
binding.webView.addJavascriptInterface(this, "app")
|
||||
upWebViewTheme()
|
||||
binding.webView.setOnLongClickListener {
|
||||
val hitTestResult = binding.webView.hitTestResult
|
||||
if (hitTestResult.type == WebView.HitTestResult.IMAGE_TYPE ||
|
||||
@@ -217,29 +214,6 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("RequiresFeature")
|
||||
private fun upWebViewTheme() {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(binding.webView.settings, AppConfig.isNightTheme)
|
||||
}
|
||||
if (AppConfig.isNightTheme) {
|
||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
|
||||
@Suppress("DEPRECATION")
|
||||
WebSettingsCompat.setForceDarkStrategy(
|
||||
binding.webView.settings,
|
||||
WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING
|
||||
)
|
||||
}
|
||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
||||
@Suppress("DEPRECATION")
|
||||
WebSettingsCompat.setForceDark(
|
||||
binding.webView.settings,
|
||||
WebSettingsCompat.FORCE_DARK_ON
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun upStarMenu() {
|
||||
if (viewModel.rssStar != null) {
|
||||
starMenuItem?.setIcon(R.drawable.ic_star)
|
||||
@@ -345,7 +319,7 @@ class ReadRssActivity : VMBaseActivity<ActivityRssReadBinding, ReadRssViewModel>
|
||||
return true
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION")
|
||||
@Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress")
|
||||
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
|
||||
url?.let {
|
||||
return shouldOverrideUrlLoading(Uri.parse(it))
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package io.legado.app.utils
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Build
|
||||
import android.webkit.WebSettings
|
||||
import androidx.webkit.WebSettingsCompat
|
||||
import androidx.webkit.WebViewFeature
|
||||
import io.legado.app.help.config.AppConfig
|
||||
|
||||
/**
|
||||
* 设置是否夜间模式
|
||||
*/
|
||||
@SuppressLint("RequiresFeature")
|
||||
fun WebSettings.setDarkeningAllowed(allow: Boolean) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
WebSettingsCompat.setAlgorithmicDarkeningAllowed(this, allow)
|
||||
} else if (AppConfig.isNightTheme) {
|
||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK_STRATEGY)) {
|
||||
@Suppress("DEPRECATION")
|
||||
WebSettingsCompat.setForceDarkStrategy(
|
||||
this,
|
||||
WebSettingsCompat.DARK_STRATEGY_PREFER_WEB_THEME_OVER_USER_AGENT_DARKENING
|
||||
)
|
||||
}
|
||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.FORCE_DARK)) {
|
||||
@Suppress("DEPRECATION")
|
||||
WebSettingsCompat.setForceDark(
|
||||
this,
|
||||
WebSettingsCompat.FORCE_DARK_ON
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user