Andorid WebView加载Url白屏问题
先说下问题,前端同事新提供了个简单的html页面, 用于展示用户隐私协议.
使用webView加载时未出现加载失败等问题,但就是一直白屏.
-
猜测提供的页面有问题? 电脑浏览器加载正常.无异常提示
-
猜测跟配置的WebSettings有关系, 设置如下:
WebSettings webSettings = webView.getSettings();
//支持js
webSettings.setJavaScriptEnabled(true);
怀疑跟网页缓存有关系,设置:
webSettings.setDomStorageEnabled(false);
webSettings.setAllowFileAccess(false);
重新运行后仍然白屏.
-
在手机浏览器打开该地址,提示如下:
怀疑是测试证书的问题,webview未弹出弹框导致?
-
修改mWebChromeClient 支持手机webview弹框.
WebChromeClient mWebChromeClient = new WebChromeClient() { @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } };
发现还是白屏.
-
此时有点疑惑了. 观察应用的输出日志:
2024-09-04 13:02:13.240 21061-21627/com.zh.web I/cr_X509Util: Failed to validate the certificate chain, error: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
2024-09-04 13:02:13.247 21061-21635/com.zh.web E/chromium: [ERROR:ssl_client_socket_impl.cc(996)] handshake failed; returned -1, SSL error code 1, net_error -202
2024-09-04 13:02:13.252 21061-21075/com.zh.web I/latform.general: Skip GC, current heap: 4843KB(0B), current native: 26MB(0B)
2024-09-04 13:02:13.304 21061-21635/com.zh.web E/chromium: [ERROR:ssl_client_socket_impl.cc(996)] handshake failed; returned -1, SSL error code 1, net_error -202解决办法:
WebViewClient mWebViewClient = new WebViewClient() { @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { try { handler.proceed(); }catch (Throwable e){ } super.onReceivedSslError(view,handler,error); } };
重新运行,展示正常.