How to load local image in Android WebView

前端 未结 4 1917
情书的邮戳
情书的邮戳 2021-01-05 08:56

I\'m trying to load a html string stored in the database which contain a image into a WebView. The image is stored in the internal memory. I am giving a referen

相关标签:
4条回答
  • 2021-01-05 09:09

    In latest android versions we cant access resources such as assets , files from storage. https://developer.android.com/reference/androidx/webkit/WebViewAssetLoader is best guide to proceed. WebViewAssetLoader and its internal classes helps to access them.

    you can check the below sample code.

        final WebViewAssetLoader assetLoader = new WebViewAssetLoader.Builder()
                .addPathHandler("/assets/", new WebViewAssetLoader.AssetsPathHandler(this)) //****for assets****
                .addPathHandler("/images/", new WebViewAssetLoader.InternalStoragePathHandler(context, getFilesDir()))//****for files****
                .build();
    
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public WebResourceResponse shouldInterceptRequest(WebView view,
                                                              WebResourceRequest request) {
                return assetLoader.shouldInterceptRequest(request.getUrl());
            }
        });
    
        String assetsPic = "<img width='42px' height='58px' src='https://appassets.androidplatform.net/assets/pic.png'/>";
        String storagePic = "<img width='42px' height='58px' src='https://appassets.androidplatform.net/images/pic.jpg'/>";
        webView.loadData(assetsPic+"<br>"+storagePic, "text/html", "UTF-8");
    
    0 讨论(0)
  • 2021-01-05 09:15

    Put the images in your assets folder. Then use the corresponding prefix

    file:///android_asset/
    
    0 讨论(0)
  • 2021-01-05 09:17

    Try like this

    String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
    String imagePath = "file://"+ base + "/image_name.jpg";
    String html = "<html><head></head><body> <img src=\""+ imagePath + "\"> </body></html>";
    webView.loadDataWithBaseURL("", html, "text/html","utf-8", "");
    
    0 讨论(0)
  • 2021-01-05 09:26

    The problem was in the file path

    file:///storage/emulated/01484890695248.jpg
    

    would be

    file:///storage/emulated/0/01484890695248.jpg
    

    Thanks @Charuක for the help..

    0 讨论(0)
提交回复
热议问题