fix(webview): 子资源连接关闭不再误报整页失败

- ERR_CONNECTION_CLOSED 若来自图片/脚本/统计等子资源,忽略并继续等待主页面
- 页面进度继续推进时自动清除瞬时错误提示
This commit is contained in:
Liuxinyu176 2026-10-09 17:11:35 +08:00
parent b62dc90c40
commit 56969cb879
2 changed files with 14 additions and 3 deletions

View File

@ -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 {

View File

@ -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)
}
}