0

我已将文件下载到我的应用程序的存储中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"and "Uncaught ReferenceError"。现在我很困惑,因为如果 loadUrl 工作得很好,为什么我的 loadDataWithBaseURL 没有表现出相同的行为?是因为我没有正确地将 HTML 转换为字符串吗?还是 HTML 代码本身?

4

1 回答 1

1

原来是html编码错误。如果您尝试下载 HTML,上述方法非常有效。

于 2013-05-15T23:21:37.073 回答