我已将文件下载到我的应用程序的存储中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 代码本身?