Android Webview loadUrl可以工作,但不能运行loadDataWithBaseURL

时间:2013-05-14 19:47:23

标签: android webview

我在file:///data/data/<myapp>/files/folder/将文件下载到我应用的存储空间中。下载到该文件夹​​中的文件包括 HTML,css,js和图像文件。使用webview的loadUrl时,以下代码对我来说非常适合:

webview.loadUrl("file:///data/data/<myapp>/files/folder/filename.html");

但现在我需要下载HTML文件,因为我需要在存储之前对其进行加密。问题不是加密信息(目前)。我要做的就是将HTML内容下载到字符串中,然后使用webview的loadDataWithBaseURL加载webview。尝试这样做时,我从Web控制台收到“Uncaught SyntaxError”和“Uncaught ReferenceError”。我不确定这些错误来自何处。

我正在使用以下代码将HTML下载到字符串中:

URL url = new URL("myserver/filename.html");
InputStream input = null;
input = url.openConnection().getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(input));

StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null){
    sb.append(line)
}

String myHTML = sb.toString(); 

现在我用loadDataWithBaseURL加载webview:

String baseURL = "file:///data/data/<myapp>/files/folder/";

WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setPluginsEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    settings.setLayoutAlgorithm(LayoutAlgorithm.NORMAL);  

webview.loadDataWithBaseURL(baseURL, myHTML, "text/html", "utf-8", null);

但是当我执行此代码时,我会得到"Uncaught SyntaxError""Uncaught ReferenceError"。现在我感到困惑,因为如果loadUrl工作得很好,为什么我的loadDataWithBaseURL不是以相同的行为行事?是因为我没有正确地将HTML转换为字符串吗?或者它是HTML代码本身?

1 个答案:

答案 0 :(得分:1)

原来是html编码错误。如果您尝试下载HTML,上述方法可以正常工作。