2012-06-18 120 views
1

我想加载一个静态HTML页面到web视图。加载静态HTML到Webview

当我改变它的内容,以它的工作原理简单的HTML页面。 所以我认为这个html文件有问题,但是在Mozilla和Chrome上可以正确查看文件。所以我的问题是

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

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

截图

Emulator Screenshot

+0

你可以发布你用来加载html到WebView的代码吗? – FoamyGuy

+0

我已经列入它的问题 HTML文件http://snipt.org/vagL9 –

+0

是HTML代码。我正在讨论将您的html文件加载到WebView中的java代码。 – FoamyGuy

回答

1

这是一个SDK错误 的loadData(字符串,...,...)方法可转换字符串的内容转换成一个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"); 
} 
3

我已经放在提供HTML文件,以资产文件夹名称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"); 
+0

我做到了,并没有奏效。 我不直接加载文件我加载完整的文件作为一个DOM并修改它的元素,然后得到HTML回来。 但是,当我从文件中删除'%'字符,它工作得很好! –

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"); 

代码解决了这个这将解决所有问题的WebView从Android 1.5以上版本

呈现一定会为你工作!