diff --git a/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt b/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt index 504dbb6bb..63d22f039 100644 --- a/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt +++ b/app/src/main/java/io/legado/app/ui/browser/WebViewActivity.kt @@ -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() { 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() { 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() { } } - 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() { 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)) diff --git a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt index ca680ea50..f8685da13 100644 --- a/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt +++ b/app/src/main/java/io/legado/app/ui/rss/read/ReadRssActivity.kt @@ -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 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 } } - @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 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)) diff --git a/app/src/main/java/io/legado/app/utils/WebSettingsExtensions.kt b/app/src/main/java/io/legado/app/utils/WebSettingsExtensions.kt new file mode 100644 index 000000000..980bd294d --- /dev/null +++ b/app/src/main/java/io/legado/app/utils/WebSettingsExtensions.kt @@ -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 + ) + } + } +} \ No newline at end of file