- In my Android Application I have used WebView to show banners.
- There is number of URLs inside banner layout, but no URL to .../favicon.ico
- WebView automatically try to load favicon.ico based on my base URL + /favicon.ico, gets response 404 and do not loads recent RULs
If important:
- base URL starts from https://...
- response uses SSL certificate
- response has additiohal headers for authorization
It is possible to prevent WebView from loading favicon or allow it to load other links after getting 404 response?
webView.setWebViewClient(new WebViewClient() {
...@Override onReceivedError...
@SuppressWarnings("deprecation")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return getNewResponse(url);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
return getNewResponse(url);
}
private WebResourceResponse getNewResponse(String url) {
try {
OkHttpClient client = MyOkHttpClient.getInstance();
Request.Builder requestBuilder = new Request.Builder();
requestBuilder.url(url.trim())
.addHeader("api-key", Constants.API_KEY)
.addHeader("platform", Constants.PLATFORM);
Request request = requestBuilder.build();
Response response = client.newCall(request).execute();
return new WebResourceResponse(
getMimeType(url),
response.header("content-encoding", "utf-8"),
response.body().byteStream()
);
} catch (Exception e) {
return null;
}
}
private String getMimeType(String url) {
...
return type;
}
});