2013-05-14 131 views
0

我有文件下载到我的应用程序的存储在file:///data/data/<myapp>/files/folder/。下载到文件夹中的文件包括一个HTML,css,js和图像文件。当使用的WebView使用loadURL,下面的代码工作完美的我:Android Webview loadUrl工作但不loadDataWithBaseURL

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加载网页视图:

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

原来是html编码错误。如果您尝试下载HTML,上述方法完美无瑕。