How To Load Local Image In Android Webview
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 reference to the html string
Solution 1:
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", "");
Solution 2:
Put the images in your assets
folder. Then use the corresponding prefix
file:///android_asset/
Solution 3:
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..
Solution 4:
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.
finalWebViewAssetLoaderassetLoader=newWebViewAssetLoader.Builder()
.addPathHandler("/assets/", newWebViewAssetLoader.AssetsPathHandler(this)) //****for assets****
.addPathHandler("/images/", newWebViewAssetLoader.InternalStoragePathHandler(context, getFilesDir()))//****for files****
.build();
webView.setWebViewClient(newWebViewClient() {
@Overridepublic WebResourceResponse shouldInterceptRequest(WebView view,
WebResourceRequest request) {
return assetLoader.shouldInterceptRequest(request.getUrl());
}
});
StringassetsPic="<img width='42px' height='58px' src='https://appassets.androidplatform.net/assets/pic.png'/>";
StringstoragePic="<img width='42px' height='58px' src='https://appassets.androidplatform.net/images/pic.jpg'/>";
webView.loadData(assetsPic+"<br>"+storagePic, "text/html", "UTF-8");
Post a Comment for "How To Load Local Image In Android Webview"