我想加載一個靜態HTML頁面到web視圖。加載靜態HTML到Webview
當我改變它的內容,以它的工作原理簡單的HTML頁面。 所以我認爲這個html文件有問題,但是在Mozilla和Chrome上可以正確查看文件。所以我的問題是
- 什麼常見的html錯誤,android webview不通過。
- 如果html文件有問題,那它是什麼。
HTML文件 http://snipt.org/vagL9
截圖
我想加載一個靜態HTML頁面到web視圖。加載靜態HTML到Webview
當我改變它的內容,以它的工作原理簡單的HTML頁面。 所以我認爲這個html文件有問題,但是在Mozilla和Chrome上可以正確查看文件。所以我的問題是
HTML文件 http://snipt.org/vagL9
截圖
這是一個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");
}
我已經放在提供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");
我做到了,並沒有奏效。 我不直接加載文件我加載完整的文件作爲一個DOM並修改它的元素,然後得到HTML回來。 但是,當我從文件中刪除'%'字符,它工作得很好! –
我面臨同樣的問題。
通過應用下面
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以上版本
呈現一定會爲你工作!
你可以發佈你用來加載html到WebView的代碼嗎? – FoamyGuy
我已經列入它的問題 HTML文件http://snipt.org/vagL9 –
是HTML代碼。我正在討論將您的html文件加載到WebView中的java代碼。 – FoamyGuy