[英]Loading Static HTML to Webview
我正在嘗試將靜態HTML頁面加載到webview中。
當我將其內容更改為簡單的html頁面時,它可以正常工作。 所以我認為這個html文件有問題,但是在Mozilla和Chrome上正確查看了該文件。 所以我的問題是
html文件http://snipt.org/vagL9
截圖
我已將html文件提供給名為snipt.html
assets文件夾。 此代碼正確顯示它。
final WebView webView = (WebView) findViewById(R.id.webview);
final WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/snipt.html");
這是一個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");
}
我面臨同樣的問題。
通過應用下面的代碼解決了這個問題
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渲染中的所有問題
肯定會為你工作!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.