Ответ 1
Есть два вопроса с кодом
- Неправильное обнаружение расширений
Например, когда код пытается получить расширение ресурса для этого URL-адреса:
https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=12&ct=1442476202&rver=6.4.6456.0&wp=MBI_SSL_SHARED&wreply=https:%2F%2Fmail.live.com%2Fdefault.aspx%3Frru%3Dinbox&lc=1033&id=64855&mkt=en-us&cbcxt=mai
Он вернет aspx%3Frru%3Dinbox&lc=1033&id=64855&mkt=en-us&cbcxt=mai
, что неверно. Существует специальный метод для получения расширения из URL-адреса: getFileExtensionFromUrl()
- В соответствии с методом документации
MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext)
может вернутьсяnull
. В этом случае ваш код задает неправильный тип mime для страницы.
Вот код метода, который учитывает обе эти проблемы.
@Override
public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
String ext = MimeTypeMap.getFileExtensionFromUrl(url);
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);
if (mime == null) {
return super.shouldInterceptRequest(view, url);
} else {
HttpURLConnection conn = (HttpURLConnection) new URL(
url).openConnection();
conn.setRequestProperty("User-Agent", userAgent);
return new WebResourceResponse(mime, "UTF-8",
conn.getInputStream());
}
}