是否可以在android中使用loadDataWithBaseURL()方法显示图像?

时间:2010-06-18 13:07:36

标签: html android image webview

我正在尝试使用android中的loadDataWithBaseURL()方法显示html文件的内容。

我只有一个String,其中包含一个名为source的String中的Html文件数据,然后我将其传递给该方法。

例如

String source; //contain html tags with images
View.loadDataWithBaseURl(null,source,"text/html","UTF-8","about:blank");

视图中显示的数据很好。 我的问题是,如果我的html文件包含任何图像,那么我无法显示它? 我怎么能这样做?

4 个答案:

答案 0 :(得分:5)

你可以这样做,如果源中的图像使用src的相对位置,那么你需要将baseUrl设置为图像所在位置的“基础”。例如,如果您从源代码加载谷歌的主页,它将如下所示:

View.loadDataWithBaseURI("http://google.com",source,"text/html","UTF-8","about:blank");

告诉webview将从哪里加载图像。

作为旁注,出于安全原因,我不认为“file://”URI在Web视图中有效。

答案 1 :(得分:3)

使用“ file:/// android_res / raw / ”作为基本网址,并将文件放在项目的 res / raw 中。

RES /原料/ index.html中

RES /原料/ image.jpg的

InputStream htmlStream = getResources().openRawResource(R.raw.index);
Reader is = new BufferedReader(new InputStreamReader(htmlStream, "UTF8"));

// read string from reader
String html = readFile(is);

webView.loadDataWithBaseURL("file:///android_res/raw/", html, 
                            "text/html", "UTF-8", null);

答案 2 :(得分:2)

我已经制作了一个关于如何使用loadDataWithBaseURL()方法来显示图像的教程 - http://lomza.totem-soft.com/tutorial-using-webview-to-load-the-html-page-from-assets/#header

答案 3 :(得分:1)

例如,如果你想使用sdcard中的一些图像,那么你的代码应该是这样的:

final String path = Environment.getExternalStorageDirectory() + File.separator + "YourFolderName"); bookView.loadDataWithBaseURL("file://" + path, htmlTextWithHeadAndBody, "text/html", "UTF-8", "");