android - 非法状态异常 : reasonPhrase can't be empty with Android WebView

标签 android webview android-webview chromium

我最近注意到许多用户正在收到此 IllegalStateException ,这会导致应用程序崩溃。它发生在 WebView向用户显示:

Fatal Exception: java.lang.IllegalArgumentException: reasonPhrase can't be empty.
       at android.webkit.WebResourceResponse.setStatusCodeAndReasonPhrase + 129(WebResourceResponse.java:129)
       at android.webkit.WebResourceResponse.(WebResourceResponse.java:70)
       at jY.a + 308(jY.java:308)
       at zn.handleMessage + 67(zn.java:67)
       at android.os.Handler.dispatchMessage + 102(Handler.java:102)
       at android.os.Looper.loop + 211(Looper.java:211)
       at android.app.ActivityThread.main + 5373(ActivityThread.java:5373)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke + 372(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run + 1020(ZygoteInit.java:1020)
       at com.android.internal.os.ZygoteInit.main + 815(ZygoteInit.java:815)

并非每个用户都会发生这种崩溃。我曾尝试要求用户更新 Chrome,希望它能更新 Chromium,并要求他们安装最新版本的 Android System WebView,但都没有给我任何成功。有没有人遇到过这个并知道如何解决这个问题?我什至无法亲自复制它。

我还在这里找到了这个错误日志:
https://bugs.chromium.org/p/chromium/issues/detail?id=925887

我还查看了源代码,可以看到相关的崩溃是由 line 154 引起的。 :
https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/webkit/WebResourceResponse.java

奇怪的是,这应该只在发生错误时发生,但我可以看到 WebView从屏幕截图为用户正确加载,然后应用程序在不久后崩溃。任何帮助将不胜感激!

最佳答案

我也遇到了类似的问题
我使用了 Jetpack webkit,
来自 androidx.webkit 包。

使用 WebViewClientCompat来自 androidx.webkit用于创建 webViewClient 导致上述异常,
但回退到框架的WebViewClient工作。
webview.webViewClient = WebViewClient()

关于android - 非法状态异常 : reasonPhrase can't be empty with Android WebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57414530/

相关文章:

c# - UnityWebRequest 和/或 HttpWebRequest 在 Android 上使用 PUT 给出 403

javascript - 安卓服务webview

android - 我如何确定该应用程序可移动到 SD 卡?

android - 在 ARCore Android 中将对象放置在相机前面

java - Android webview读取cookies

android - 仅拦截双击

android - WebView 显示带有 loadDataWithBaseURL 的源 html,而不是渲染 View

android - 在 WebView 中从相机或图库上传图像

php - 从网页到android应用程序的tcp连接

android: 将 WebView 设置为(真实)全屏