2012-06-18 158 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以上版本

呈現一定會爲你工作!