I achieved this with a little hack. First, I created a fake 1x1 icon file and saved it in the resources folder. Then I tried the WebViewClient shouldInterceptRequest () method , where I check the URL whether this is a request for the favicon file, in which case it returns a WebResourceResponse with an InputStream that contains our fake icon:
@Override @CallSuper public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) { if(!request.isForMainFrame() && request.getUrl().getPath().equals("/favicon.ico")) { try { return new WebResourceResponse("image/png", null, new BufferedInputStream(view.getContext().getAssets().open("empty_favicon.ico"))); } catch (IOException e) { e.printStackTrace(); } } return null; }
Please note that InputStream should not be closed in our code, because it is subsequently used by WebView to read the icon. WebviewClient must be installed in WebView through its setter:
mWebView.setWebViewClient(subclassedWebViewClient);
Miloลก ฤernilovskรฝ
source share