WevView的WebViewClient的加载控制

看了好多网上的例子,但都是千篇一律,没有什么深入的东西,其他的就不介绍了,可以上网搜,这里主要介绍
WebViewClient在处理URL时的一些控制问题,例如,有些恶意的URL连接我们想进行屏蔽了。直接粘代码。
// WebViewClient里面封装了加载URL结果的所有信息,可以重写相对应的方法获取
        webView.setWebViewClient(new WebViewClient() {
            // 接在页面出现错误是调用
            public void onReceivedError(WebView view, int errorCode,
                    String description, String failingUrl) {
                super.onReceivedError(view, errorCode, description, failingUrl);
                Toast.makeText(getApplicationContext(),
                        "Sorry! " + description, 3000).show();
            }
             // shouldOverrideUrlLoading() 理解起来是开发者可以自己控制新的URL处理方式,
             // 听起来貌似很很方便。你也许
             // 会和我一样想这个function每次会在onPageStarted之前都会调用它,那么在我们开发
             // 中,若发现有些URL自己可以来处理,而不是用webview像平常的url那样解释出来,
             // 就可以在这个function中处理,可当你在开发的时候你就发现事实并不是你想象
             // 的那样,shouldOverrideUrlLoading并不是每次都在onPageStarted之前开始调
             // 用的,就是说一个新的URL不是每次都经过shouldOverrideUrlLoading的(当加载URL时,
             // 第一次加载时,此方法并不会被调用,加载完成之后,在页面上点击链接时,才会
             //先调用shouldOverrideUrlLoading(),再调用onPageStarted(),
             // onPageStarted()方法每次显示页面的时候都会被调用), 只有在调
             // 用webview.loadURL的时候才会调用,那你怎么办呢?若你真的想自己处理一些特殊的URL,
             // 你可以在onPageStarted中处理,因为onPageStarted每次都会调用,但是你怎样让viewView
             //停止解释你自己已经处理的URL呢,方法就是在onPageStarted中检测到url为你想要处理的之
             // 后就调用webview.stoploading的funciton来停止webview的加载。
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                webView.loadUrl(url);
                System.out.println("shouldOverrideUrlLoading");
                return true;
            }
             //  因为shouldOverrideUrlLoading()第一次并不会被调用,而onPageStarted()每次都
             // 会被调用, 因此我们要处理一些URL(不想让WebView加载)时,只需在onPageStarted()方
             // 法中完成即可
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                System.out.println("onPageStarted");
                if (url.equals("http://www.baidu.com/")) {
                    webView.stopLoading();
                }
            }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值