1

我正在尝试将静态 HTML 页面加载到 webview 中。

当我将其内容更改为一个简单的 html 页面时,它可以工作。所以我认为这个 html 文件有问题,但是在 Mozilla 和 Chrome 上可以正确查看该文件。所以我的问题是

  • android webview 没有通过的常见 html 错误。
  • 如果 html 文件有问题,那是什么问题。

html 文件 http://snipt.org/vagL9

截屏

模拟器截图

4

3 回答 3

3

我已将提供的 html 文件放置到带有 name 的 assets 文件夹中snipt.html。并且此代码正确显示它。

final WebView webView = (WebView) findViewById(R.id.webview);
final WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/snipt.html");
于 2012-06-18T14:56:21.423 回答
1

这是一个 SDK 错误 loadData(String, ..., ...) 方法将字符串的内容转换为 uri,因此我的代码包含需要编码的字符,例如 % 它截断了导致错误的代码。所以在这里找到的解决方案是将这些字符转换为 unicode 作为此代码

public final static void webViewLoadData(WebView web, String html) {
  StringBuilder buf = new StringBuilder(html.length());
  for (char c : html.toCharArray()) {
    switch (c) {
      case '#':  buf.append("%23"); break;
      case '%':  buf.append("%25"); break;
      case '\'': buf.append("%27"); break;
      case '?':  buf.append("%3f"); break;                
      default:
        buf.append(c); break;
      }
  }
  web.loadData(buf.toString(), "text/html", "utf-8");
}
于 2012-06-18T17:54:38.743 回答
0

我面临着同样的问题。

通过应用下面的代码解决了这个问题

WebView webView = (WebView) findViewById(R.id.webView1);

HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(location);
HttpResponse response = httpClient.execute(httpGet);
String data = new BasicResponseHandler().handleResponse(response);
String base64 = android.util.Base64.encodeToString(data.getBytes("UTF-8"), android.util.Base64.DEFAULT);
webView.loadData(base64, "text/html; charset=utf-8", "base64");

这将解决从 android 1.5+ 开始的 webview 渲染中的所有问题

一定会为你工作!

于 2013-01-24T18:41:03.473 回答