将资源图像加载到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 片段

在 WebView 中加载页面之前,用本地 Android 资源替换 HTML 文档的图像

Android WebView从资源原始文件夹加载html文件

android webview不加载片段

导航到与 webview 片段不同的片段后,如何在 webview 中返回?

将相同的图库图像加载到两个不同的活动片段中 Android Picasso