我在为我的应用程序打包图像时遇到了问题。 我的项目中有原始文件夹。该文件夹包含jpg中的图像,如img1.jpg,img2.jpg。 我需要在我的应用程序中查看WebView中的这些文件。
我试试
String Url="file:///android_res/raw/"+neccessary_file";
WebView.LoadUrl(Url);
当我尝试应用webview发送404页面时,找不到文件。 我能做些什么才能正确?
答案 0 :(得分:0)
尝试使用
附加您的网址String html = "<html><head></head><body><img src=\""+ URL + "\"></body></html>";
webView.loadDataWithBaseURL("", html, "text/html","utf-8", "");
答案 1 :(得分:0)
使用资源ID,格式为:
"android.resource://[package]/[res type]/[res name]"
Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/raw/myfile");
答案 2 :(得分:0)
我知道已经晚了,但也许可以帮助别人。
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;
}
});