天天看点

android webview 添加加载错误提示

在setWebViewClient中重写这几个方法

@Override
            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
                handler.proceed();
                view.loadUrl("about:blank");
                tvError.setVisibility(View.VISIBLE);
            }


            @TargetApi(Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) {
                super.onReceivedError(webView, webResourceRequest, webResourceError);
                //是否是为 main frame创建
                if (webResourceRequest.isForMainFrame()) {
                    webView.loadUrl("about:blank");
                    // 加载自定义错误页面
                    tvError.setVisibility(View.VISIBLE);
                }

            }

            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                super.onReceivedError(view, errorCode, description, failingUrl);
                //6.0以下执行
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    return;
                }
                view.loadUrl("about:blank");
                tvError.setVisibility(View.VISIBLE);
            }

            @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
            @Override
            public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
                view.loadUrl("about:blank");
                view.removeAllViews();
                tvError.setVisibility(View.VISIBLE);
                super.onReceivedHttpError(view, request, errorResponse);
            }
           

因为 第三个方法 onReceivedError  已经过时,在这里写是为了兼容6.0以下的版本

view.loadUrl("about:blank"); 方法必须添加,不然的还是会显示404等那些错误信息