我有一个应用程序,其中一些Android 4.1 / 4.2用户报告说WebView没有呈现其内容,但它显示的是源代码。
WebView显示代码非常标准,适用于大多数用户。
webView.setVisibility(View.VISIBLE);
webView.setVerticalFadingEdgeEnabled(false);
webView.setFadingEdgeLength(0);
webView.setFocusable(true);
webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
case MotionEvent.ACTION_UP:
if (!view.hasFocus()) {
view.requestFocus();
}
break;
}
return false;
}
});
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setGeolocationEnabled(true);
settings.setLoadWithOverviewMode(true);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
settings.setAllowUniversalAccessFromFileURLs(true);
}
settings.setSupportZoom(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Log.w("TEST", url);
// The app does some other things here, but are unrelated to que question
return true;
}
});
webView.setWebChromeClient(new MyChromeClient());
webView.loadDataWithBaseURL(Const.WEB_VIEW_BASE_URL, injectHtmlAndCss(guide.getContent()), "text/html; charset=UTF-8", null, null);
}
以下是其他人正在发生的事情的一个例子:
我完全不知道这件事。
答案 0 :(得分:3)
事实证明,loadDataWithBaseURL方法不适用于Android 4.1 / 4.2。
我真的需要更改基本网址,因为我的HTML代码中的相对路由引用了很多资源,因此我在<head>
标记中注入了<base>
标记。例如:
<html>
<head>
<base href="http://www.example.com/">
</head>
<body>
<!-- YOUR BODY GOES HERE -->
</body>
</html>
我已经用loadData加载了html:
webView.loadData(injectHtmlAndCss(guide.getContent()), "text/html; charset=UTF-8", "UTF-8");
它就像一个魅力。呼。
答案 1 :(得分:0)
替换
webView.loadDataWithBaseURL(Const.WEB_VIEW_BASE_URL, injectHtmlAndCss(guide.getContent()), "text/html; charset=UTF-8", null, null);
与
webView.loadDataWithBaseURL(Const.WEB_VIEW_BASE_URL, injectHtmlAndCss(guide.getContent()), "text/html", null, null);
然后,在下面添加声明,它将起作用。
webSettings.setDefaultTextEncodingName("UTF-8");
答案 2 :(得分:0)
我遇到了同样的问题,就我而言,HTML代码之前还有一个换行符,所以我认为这是由于HTML HTML format error文件格式错误引起的