From 56969cb879905da5a26bfec9738fc1a92405cb2f Mon Sep 17 00:00:00 2001 From: Liuxinyu176 <1041316040@qq.com> Date: Fri, 9 Oct 2026 17:11:35 +0800 Subject: [PATCH] =?UTF-8?q?fix(webview):=20=E5=AD=90=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E5=85=B3=E9=97=AD=E4=B8=8D=E5=86=8D=E8=AF=AF?= =?UTF-8?q?=E6=8A=A5=E6=95=B4=E9=A1=B5=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ERR_CONNECTION_CLOSED 若来自图片/脚本/统计等子资源,忽略并继续等待主页面 - 页面进度继续推进时自动清除瞬时错误提示 --- app/build.gradle.kts | 4 ++-- .../rainy/token/ui/webview/WebViewLoginScreen.kt | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fbbd5d3..1156d6f 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.rainy.token" minSdk = 31 targetSdk = 35 - versionCode = 32 - versionName = "1.7.12" + versionCode = 33 + versionName = "1.7.13" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/com/rainy/token/ui/webview/WebViewLoginScreen.kt b/app/src/main/java/com/rainy/token/ui/webview/WebViewLoginScreen.kt index c0ca551..d21c061 100644 --- a/app/src/main/java/com/rainy/token/ui/webview/WebViewLoginScreen.kt +++ b/app/src/main/java/com/rainy/token/ui/webview/WebViewLoginScreen.kt @@ -219,15 +219,26 @@ fun WebViewLoginScreen( request: android.webkit.WebResourceRequest?, error: android.webkit.WebResourceError? ) { + // 只把“主框架”加载失败当成整页失败;图片/脚本/统计等子资源 + // ERR_CONNECTION_CLOSED 很常见,页面仍在加载,不能误报。 + if (request?.isForMainFrame != true) { + DebugLog.i("TraeLogin", "subresourceError(ignored): ${request?.url?.toString()?.toSafeLogUrl()} ${error?.description}") + super.onReceivedError(view, request, error) + return + } pageLoading = false pageError = error?.description?.toString() ?: request?.url?.toString().orEmpty() - DebugLog.w("TraeLogin", "pageError: ${request?.url?.toString()?.toSafeLogUrl()} ${error?.description}") + DebugLog.w("TraeLogin", "pageError(main): ${request?.url?.toString()?.toSafeLogUrl()} ${error?.description}") super.onReceivedError(view, request, error) } } webChromeClient = object : WebChromeClient() { override fun onProgressChanged(view: WebView?, newProgress: Int) { pageLoading = newProgress < 100 + // 页面仍在加载(子资源逐渐完成)时,自动清掉之前的瞬时网络错误提示 + if (newProgress > 0 && pageError != null && newProgress < 100) { + pageError = null + } super.onProgressChanged(view, newProgress) } }