WebView--自定义加载页面异常提示

Android项目中,难免会用到WebView 加载网页内容,如果由于网络异常等原因导致页面内容无法加载出来的时候就会报错,默认报错内容如下图:

Paste_Image.png

在上面的图中我们可以看到,如果不做处理的话,报错信息中会包含我们连接到的网址,但实际上我们可能不想让用户看到网址,那么这个时候我们就需要使用自定义的错误提示页面。

既然想使用自定义错误提示,那我们就需要先知道啥时候出现了错误,监测错误的时候我们可以使用 WebViewClient 中的 onReceivedError() 方法,当有错误时就给出我们自定义的错误提示,具体代码如下:

WebViewTestActivity01.java

/**
 * Created by CnPeng on 2017/1/5. WebView 测试页面1
 */

public class WebViewTestActivity01 extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_webviewtest01);

        init();
    }

    private void init() {
        WebView webView = (WebView) findViewById(R.id.webviewTest1);
        final String url_ = "http://blog.csdn.net/north1989/article/details/53471439";


        webView.setWebViewClient(new WebViewClient() {  //监测加载状态
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);      //指明要加载的页面
                return true;        //返回true表示强制使用当前webView 显示网页内容,而不跳转到默认浏览器
            }

            @Override       //当发生错误时调用此方法
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {

                // 自定义错误提示页面,灰色背景色,带有文字,文字不要输汉字,由于编码问题汉字会变乱码              
                String errorHtml = "<html><body style='background-color:#e5e5e5;'><h1>Page Not Found " + 
                        "!</h1></body></html>";
                view.loadData(errorHtml, "text/html", "UTF-8");
            }
        });

        webView.loadUrl(url_);
    }
}

注意:A
WebViewClient 中能监测Error 的方法有四个,两个onReceivedError(),其中一个废弃了;一个onReceivedHttpError();一个onReceivedSslError()。我们只用onReceivedError()方法,为了确保低版本手机上也能过滤到Error ,也可以将废弃的onReceivedError()写上。千万不要随便用onReceivedHttpError,否则你的页面会一直是你定义的错误提示!!!我也不知道 onReceivedSslError 到底是啥错误,所以。。。

B
上面展示的自定义错误页面其实使我们用字符串定义的一个简单的html页面,加载这个页面的时候,我们用的是 **loadData( ) ** 。在定义这个错误提示的时候,尽量不要用汉字,虽然在loadData()中定义编码为utf-8 但似乎并不起作用,汉字还是变成了乱码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CnPeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值