Andorid WebView加载Url白屏问题

先说下问题,前端同事新提供了个简单的html页面, 用于展示用户隐私协议.

使用webView加载时未出现加载失败等问题,但就是一直白屏.

  1. 猜测提供的页面有问题? 电脑浏览器加载正常.无异常提示

  2. 猜测跟配置的WebSettings有关系, 设置如下:

 WebSettings webSettings = webView.getSettings();
 //支持js
 webSettings.setJavaScriptEnabled(true);

怀疑跟网页缓存有关系,设置:

webSettings.setDomStorageEnabled(false);
webSettings.setAllowFileAccess(false);

​ 重新运行后仍然白屏.

  1. 在手机浏览器打开该地址,提示如下:
    Andorid WebView加载Url白屏问题: CertPathValidatorException-LMLPHP

    怀疑是测试证书的问题,webview未弹出弹框导致?

  2. 修改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);
            }
        };
    

    发现还是白屏.

  3. 此时有点疑惑了. 观察应用的输出日志:

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

重新运行,展示正常.

09-05 15:45