静的 HTML ページを Web ビューに読み込もうとしています。
その内容を単純な html ページに変更すると、機能します。したがって、この html ファイルには何か問題があると思いますが、ファイルは Mozilla と Chrome で正しく表示されます。だから私の質問は
- Android WebView が通過しない一般的な HTML エラー。
- html ファイルに何か問題がある場合、それは何ですか。
HTML ファイル http://snipt.org/vagL9
スクリーンショット

静的 HTML ページを Web ビューに読み込もうとしています。
その内容を単純な html ページに変更すると、機能します。したがって、この html ファイルには何か問題があると思いますが、ファイルは Mozilla と Chrome で正しく表示されます。だから私の質問は
HTML ファイル http://snipt.org/vagL9
スクリーンショット

提供された 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");
これは 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");
}
私は同じ問題に直面していました。
以下のコードを適用してこれを解決しました
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 レンダリングのすべての問題が修正されます。
間違いなくあなたのために働くでしょう!