使用webView的loadDataWithBaseURL不从sdcard加载图像

时间:2012-08-01 07:14:47

标签: android url android-webview android-sdcard

我想在webview中设置一些html内容和一些图片。 我已经在互联网上阅读了我必须使用loadDataWithBaseUrl做这样的事情,因为我需要按顺序链接图像文件夹(basUrl)

我的html内容很好地加载,我甚至可以完美地运行javascripts,但由于某种原因我的图像无法加载。

我读过的地方有一些安全原因,这就是为什么我无法将图像从SD卡加载到webview,有些人说它可以轻松完成通过loadDataWithBaseUrl ,所以我真的不知道哪一个是的。

这是我试过的方法,也许有些错误所以不要粗鲁:

我在这里获得了我的html文件:

mnt/sdcard/com.mypackage.myproject/3/3.html

我的图片在这里:

mnt/sdcard/com.mypackage.myproject/3/images/Cover.png

这是我的内容加载:

myWebView.loadDataWithBaseURL("file:///mnt/sdcard/com.mypackage.myproject/3", myHtml, "text/html", "utf-8", "");

在我的HTML代码中

<img src="images/Cover.png" alt="Cover.png" height="820"/>

因此,当您看到我给baseUrl时,由于某种原因,webview无法加载我的图像。

正如许多人所说,这可以是一个解决方案:

mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(true);
String base = Environment.getExternalStorageDirectory().getAbsolutePath().toString();
String imagePath = "file:/"+ base + "/test.jpg";
String html = "<html><head></head><body><img src=\""+ imagePath + "\"></body></html>";
mWebView.loadData(html, "text/html","utf-8");

但是,我有700个不同的html文件,并且在许多不同的地方有很多图像......所以我无法修改HTML代码。

有没有办法将图片文件夹链接到我的html文件以正确使用它们作为baseUrl?

2 个答案:

答案 0 :(得分:3)

您的加载语句中存在语法错误。您必须在:

之后加file
myWebView.loadDataWithBaseURL("file:///mnt/sdcard/com.mypackage.myproject/3", myHtml, "text/html", "utf-8", "");

答案 1 :(得分:0)

您无需将图像的完整路径放入html。

img src =“ images / test1.jpg”

相反

img src = \“” + imagePath +“ \”