将资源图像加载到Webview
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将资源图像加载到Webview相关的知识,希望对你有一定的参考价值。
我在为应用程序打包图像时遇到问题。我的项目中有原始文件夹。该文件夹包含jpg格式的图像,例如img1.jpg,img2.jpg。我需要在应用程序的WebView中查看这些文件。
我尝试
String Url="file:///android_res/raw/"+neccessary_file";
WebView.LoadUrl(Url);
[当我尝试应用程序Webview发送404页面时,找不到文件。我该怎么做才能纠正?
答案
尝试在URL后面附加
String html = "<html><head></head><body><img src=""+ URL + ""></body></html>";
webView.loadDataWithBaseURL("", html, "text/html","utf-8", "");
也请参考此链接https://stackoverflow.com/a/14405801/1208563
另一答案
使用资源ID,格式为:
"android.resource://[package]/[res type]/[res name]"
Uri path = Uri.parse("android.resource://com.androidbook.samplevideo/raw/myfile");
另一答案
我知道已经晚了,但也许可以帮助别人。
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;
}
});
以上是关于将资源图像加载到Webview的主要内容,如果未能解决你的问题,请参考以下文章
在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像
Android WebView从资源原始文件夹加载html文件