将资源图像加载到webview

时间:2013-11-28 07:53:10

标签: android webview resources imageview drawable

我在为我的应用程序打包图像时遇到了问题。 我的项目中有原始文件夹。该文件夹包含jpg中的图像,如img1.jpg,img2.jpg。 我需要在我的应用程序中查看WebView中的这些文件。

我试试

String Url="file:///android_res/raw/"+neccessary_file";
WebView.LoadUrl(Url);

当我尝试应用webview发送404页面时,找不到文件。 我能做些什么才能正确?

3 个答案:

答案 0 :(得分:0)

尝试使用

附加您的网址
String html = "<html><head></head><body><img src=\""+ URL + "\"></body></html>";
webView.loadDataWithBaseURL("", html, "text/html","utf-8", ""); 

另请参阅此链接https://stackoverflow.com/a/14405801/1208563

答案 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;
            }

        });