Webview始终加载不存在的url

时间:2016-03-15 03:52:47

标签: android webview

我有一个问题。

我使用webview在我的应用中加载网址(例如www.example.com/yyy),但每当我执行“加载”操作时行动, 总有另一个负载'动作尝试加载网站的网站图标(网址是www.me.com/favicon.ico)。这将返回404未找到的错误。

这是(加载favicon)webview的默认行为吗?我怎么能禁用它?

以下是发送请求的标头。

    GET /favicon.ico HTTP/1.1
   Host: xxx.com
   Pragma: no-cache
   Cache-Control: no-cache
   User-Agent: Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5 Build/MMB29Q; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/48.0.2564.106       Mobile Safari/537.36

   Referer: http://www.example.com/k.gif?yd_ewp=498&yd_ext=EnQKATASIDM0YzZkNjE3MjcyNjI1N2I0N2FiMjIxZWM1Mzc5MmZkIksIxJSRCBDw5P8BGPKzHiC1_RAo8k4wZDhkZQAA-UNwAHgAgAEAmAEBogELVHJhZGl0aW9uYWy6ARJ7Ik9SREVSRURfSUQiOiIxIn0wAiIkOTI5NDM4MDMtZjFiOS00NGUyLTkwZjgtYzgwNmE2YmU5OWUyKG4wADoAQgBSDzExNC4yMTUuMTI5LjEyNWoNMTQ1ODAxMjg1MjkxOHgAggEAiAHyA5ABtqXawrcqqAEBsAEBuAEBwgEDOTY4yAEB0AEB2gEPMzU4MjM5MDU3NjEyMzYw
   Accept-Encoding: gzip, deflate
   Accept-Language: zh-CN,en-US;q=0.8
   X-Requested-With: com.you

代码是webview的一个非常简单的用法:

        mWebView = new WebView(this);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        mWebView.getSettings().setLoadWithOverviewMode(true);
        mWebView.getSettings().setUseWideViewPort(true);
        mWebView.setWebViewClient(new WebViewClient(){
            @Override
            public void onReceivedError(WebView view, int errorCode,
                                        String description, String failingUrl) {
                loadNext(view);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                loadNext(view);
            }

            private void loadNext(WebView view){
                mIndex++;
                if(mIndex < mUrlSize){
                    try {
                        view.loadUrl(mUrls[mIndex]);
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                } else {
                    stopSelf();
                }
            }

        });

1 个答案:

答案 0 :(得分:0)

一个快速解决方法是覆盖自定义getFavicon()中的WebView功能。只需覆盖该功能。它应该返回一个Bitmap对象,因此您可以返回任何虚拟位图。