簡體   English   中英

將靜態HTML加載到Webview

[英]Loading Static HTML to Webview

我正在嘗試將靜態HTML頁面加載到webview中。

當我將其內容更改為簡單的html頁面時,它可以正常工作。 所以我認為這個html文件有問題,但是在Mozilla和Chrome上正確查看了該文件。 所以我的問題是

  • android webview沒有傳遞什么常見的html錯誤。
  • 如果html文件有問題,那么它是什么。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM