2012-08-01 54 views
1

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

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

某处我读过存在一定的安全理由,这就是为什么我不能加载图片来自SD卡的WebView有的说,它可以通过loadDataWithBaseUrl轻松完成,所以我真的不知道哪一个是真的。

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

我来到这里我的html文件:

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

我的图片在这里:

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

这是我的内容loading:

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?

+0

你看http://stackoverflow.com/questions/3069822/is-it-possible-to-display-image-with-loaddatawithbaseurl-method-in-android后? – user370305 2012-08-01 07:16:32

+0

是的,但这个问题与SD卡无关。 – 2012-08-01 07:17:25

+0

[在webview中加载保存在SD卡中的图像]的可能的重复(http://stackoverflow.com/questions/5051364/load-the-image-saved-in-sdcard-in-webview) – Praveenkumar 2012-08-01 07:18:09

回答

3

您的加载语句中有语法错误。你必须把:file

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

是的,但在我的代码中是“file:/// ...”。 – 2012-08-01 07:20:47

+0

这并不是我给出答案时。 – 2012-08-01 07:22:44

+0

我知道我知道我编辑,因为你:) – 2012-08-01 07:24:56