1

静的 HTML ページを Web ビューに読み込もうとしています。

その内容を単純な html ページに変更すると、機能します。したがって、この html ファイルには何か問題があると思いますが、ファイルは Mozilla と Chrome で正しく表示されます。だから私の質問は

  • Android WebView が通過しない一般的な HTML エラー。
  • html ファイルに何か問題がある場合、それは何ですか。

HTML ファイル http://snipt.org/vagL9

スクリーンショット

エミュレータのスクリーンショット

4

3 に答える 3

3

提供された html ファイルを、名前の assets フォルダーに配置しました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");
于 2012-06-18T14:56:21.423 に答える
1

これは SDK のバグです loadData(String, ..., ...) メソッドは文字列の内容を uri に変換します。私のコードには % のようにエンコードする必要がある文字が含まれているため、コードが切り捨てられてエラーが発生しました。ここで見つかった解決策は、これらの文字をこのコードとしてユニコードに変換することでした

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");
}
于 2012-06-18T17:54:38.743 に答える
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");

これにより、Android 1.5+ からの webview レンダリングのすべての問題が修正されます。

間違いなくあなたのために働くでしょう!

于 2013-01-24T18:41:03.473 に答える