【发布时间】:2017-04-18 21:34:48
【问题描述】:
- 在我的 Android 应用程序中,我使用 WebView 来显示横幅。
- 横幅布局中有多个 URL,但 没有指向 .../favicon.ico 的 URL
- WebView 自动尝试根据我的基本 URL + /favicon.ico 加载 favicon.ico,得到响应 404 并且 不加载最近的 RUL
如果重要:
- 基本 URL 从 https://...开始
- 响应使用 SSL 证书
- 响应具有额外的授权标头
有可能阻止 WebView 加载 favicon 或 在得到 404 响应后允许它加载其他链接?
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;
}
});
【问题讨论】:
标签: java android android-webview