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