I know it's late but maybe help someone else.
WebView webView = new WebView(context);
webView.setWebViewClient(new WebViewClient() {
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
return interceptRequest(url);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Nullable
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
try {
return interceptRequest(request.getUrl().toString());
} catch (Exception e) {
Log.w("WebViewClient.shouldInterceptRequest", "request = " + request, e);
}
return null;
}
private WebResourceResponse interceptRequest(String url) {
WebResourceResponse webResourceResponse = null;
try {
Resources resources = context.getResources();
if (url.startsWith("file:///android_res/raw/")) {
String resName = url.substring("file:///android_res/raw/".length());
int resourceId = resources.getIdentifier(resName, "raw", Lambo.getAppContext().getPackageName());
TypedValue value = new TypedValue();
resources.getValue(resourceId, value, false);
String typeValueString = value.string.toString();
String extension = typeValueString.substring(typeValueString.lastIndexOf('.') + 1);
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
InputStream inputStream = resources.openRawResource(resourceId);
webResourceResponse = new WebResourceResponse(mimeType, null, inputStream);
}
} catch (Exception e) {
Log.w("WebViewClient.interceptRequest", "url = " + url, e);
}
return webResourceResponse;
}
});