【问题标题】:Android Webview loadUrl works but not loadDataWithBaseURLAndroid Webview loadUrl 有效,但 loadDataWithBaseURL 无效
【发布时间】:2013-05-09 05:37:03
【问题描述】:

我在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 代码本身?

【问题讨论】:

    标签: android webview


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-10-08
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-08
      • 2013-08-24
      • 2018-11-05
      • 1970-01-01
      相关资源
      最近更新 更多