我在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代码本身?
答案 0 :(得分:1)
原来是html编码错误。如果您尝试下载HTML,上述方法可以正常工作。