From 0c42025fea7ad7ce8abd233eda2bad43b1d40c72 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Sat, 22 Nov 2025 13:44:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E5=86=8D=E9=98=BB=E6=AD=A2=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E5=86=85=E8=B0=83=E7=94=A8=E5=BA=94=E7=94=A8=E5=86=85?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E7=9A=84URI=20Scheme=20#344?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/rss/read/ReadRssActivity.kt | 74 ++----------------- 1 file changed, 8 insertions(+), 66 deletions(-) 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 0b018d090..be5bb8a23 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 @@ -462,6 +462,10 @@ class ReadRssActivity : VMBaseActivity view: WebView, request: WebResourceRequest ): Boolean { + val targetUri = request.url + if (targetUri.scheme == "legado" || targetUri.scheme == "yuedu") { + return shouldOverrideUrlLoading(targetUri) + } val currentUrl = lastUrl ?: view.url val targetUrl = request.url.toString() lastUrl = targetUrl @@ -475,6 +479,10 @@ class ReadRssActivity : VMBaseActivity @Suppress("DEPRECATION", "OVERRIDE_DEPRECATION", "KotlinRedundantDiagnosticSuppress") override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { + val targetUri = url.toUri() + if (targetUri.scheme == "legado" || targetUri.scheme == "yuedu") { + return shouldOverrideUrlLoading(targetUri) + } val currentUrl = lastUrl ?: view.url val targetUrl = url lastUrl = targetUrl @@ -538,71 +546,6 @@ class ReadRssActivity : VMBaseActivity .show() } - /** - * 如果有黑名单,黑名单匹配返回空白, - * 没有黑名单再判断白名单,在白名单中的才通过, - * 都没有不做处理 - */ - override fun shouldInterceptRequest( - view: WebView, - request: WebResourceRequest - ): WebResourceResponse? { - val url = request.url.toString() - val source = viewModel.rssSource ?: return super.shouldInterceptRequest(view, request) - val blacklist = source.contentBlacklist?.splitNotBlank(",") - if (!blacklist.isNullOrEmpty()) { - blacklist.forEach { - try { - if (url.startsWith(it) || url.matches(it.toRegex())) { - return createEmptyResource() - } - } catch (e: PatternSyntaxException) { - AppLog.put("黑名单规则正则语法错误 源名称:${source.sourceName} 正则:$it", e) - } - } - } else { - val whitelist = source.contentWhitelist?.splitNotBlank(",") - if (!whitelist.isNullOrEmpty()) { - whitelist.forEach { - try { - if (url.startsWith(it) || url.matches(it.toRegex())) { - return super.shouldInterceptRequest(view, request) - } - } catch (e: PatternSyntaxException) { - val msg = "白名单规则正则语法错误 源名称:${source.sourceName} 正则:$it" - AppLog.put(msg, e) - } - } - return createEmptyResource() - } - } - return super.shouldInterceptRequest(view, request) - } - - override fun onPageFinished(view: WebView, url: String?) { - super.onPageFinished(view, url) - view.title?.let { title -> - if (title != url && title != view.url && title.isNotBlank() && url != "about:blank") { - binding.titleBar.title = title - } else { - binding.titleBar.title = intent.getStringExtra("title") - } - } - viewModel.rssSource?.injectJs?.let { - if (it.isNotBlank()) { - view.evaluateJavascript(it, null) - } - } - } - - private fun createEmptyResource(): WebResourceResponse { - return WebResourceResponse( - "text/plain", - "utf-8", - ByteArrayInputStream("".toByteArray()) - ) - } - private fun shouldOverrideUrlLoading(url: Uri): Boolean { val source = viewModel.rssSource val js = source?.shouldOverrideUrlLoading @@ -654,7 +597,6 @@ class ReadRssActivity : VMBaseActivity ) { handler?.proceed() } - } }