java - org.chromium.android_webview.AwContentsClientBridge$$Lambda$1.run 的 NoSuchMethod
问题描述
该问题来自我的应用程序中的 Crashlytics。在 MyApplication 中,我为显示站点显示 Webview。
-> 真的不知道如何重现这个问题。
这是来自 Crashlytics 的完整日志详细信息:
Fatal Exception: java.lang.NoSuchMethodError: No static method b()I in class Landroid/net/http/SslError; or its super classes (declaration of 'android.net.http.SslError' appears in /system/framework/framework.jar)
at com.google.android.gms.internal.ads.zzbhb.onReceivedSslError(zzbhb.java:229)
at com.android.webview.chromium.WebViewContentsClientAdapter.onReceivedSslError(WebViewContentsClientAdapter.java:453)
at org.chromium.android_webview.AwContentsClientBridge$$Lambda$1.run(AwContentsClientBridge.java:2)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:179)
at android.app.ActivityThread.main(ActivityThread.java:5730)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:681)
Android:设备名称:华硕,Huwai,oppo Devie os:6.0.1,5.0
解决方案
也许你minifyEnabled true
在你的 gradle 脚本中使用?
onReceivedSslError
这是通过在 WebViewClient中覆盖来处理 ssl 错误的正确方法:
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
if (activity != null) {
AlertDialog.Builder(activity)
.setTitle(SSL + " " + activity.getString(R.string.error))
.setMessage(error.toString())
.setPositiveButton(activity.getString(R.string.go_on)) { _, _ ->
handler.proceed()
}
.setNegativeButton(R.string.cancel) { _, _ ->
handler.cancel()
}
.create()
.show()
} else {
handler.cancel()
}
}
更新了 KOTLIN 中的使用示例:
webView.webViewClient = object: WebViewClient(){
override fun onReceivedSslError(view: WebView, handler: SslErrorHandler, error: SslError) {
if (activity != null) {
AlertDialog.Builder(activity)
.setTitle(BaseTopSportWebViewClient.SSL + " " + activity.getString(R.string.error))
.setMessage(error.toString())
.setPositiveButton(activity.getString(R.string.go_on)) { _, _ ->
handler.proceed()
}
.setNegativeButton(R.string.cancel) { _, _ ->
handler.cancel()
}
.create()
.show()
} else {
handler.cancel()
}
}
}
推荐阅读
- php - 在 Laravel 中使用存储库插入多个条目
- keras - 训练期间的批量大小设置
- docker - ansible-container docker.errors.DockerException:获取服务器 API 版本时出错
- c# - 使用 Gauge 框架运行并行执行
- windows - 为什么有些程序没有出现在任务管理器的启动选项卡上?
- html - 想要在文本前面对齐图像但在中心
- java - HashMap成员的并发修改
- mongodb - 在 Zapier 上连接 Mongodb Atlas
- python - 如何在 HTML 代码中使用 python 变量
- javascript - 使用 JavaScript 从网络服务器中提取 JSON 数据