安卓WebView显示空白页面

3
问题只发生在一些设备上。我的应用程序大约有190万用户,我从一些用户的反馈中得到了这个问题。他们也发送了屏幕截图。
问题的详细说明:WebView无法在某些设备上显示我的静态HTML内容,只显示空白页面。但99%的设备都正常工作。
根据用户反馈,这个问题出现在许多不同品牌的设备上,如三星、索尼、LG、中兴等。他们也有不同版本的Android操作系统,从4.0.3到5.1.1。
尝试了所有Genymotion模拟器和许多真实设备,所有设备都对我完美地工作。我个人从未见过这个错误。但是一些用户已经报告了这个问题1.5年了。
另外,我的WebView的layout_height参数是wrap_content,但它的行为就像有一些不可见的内容(几行)。通常情况下,它应该有很多行。

Screen Shot

我的Webview设置:

webView = (WebView) v.findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(wvClient);
webView.getSettings().setTextSize(WebSettings.TextSize.NORMAL);

String start = "<html><head><meta name=\"viewport\" content=\"user-scalable=no\"/><meta http-equiv='Content-Type' content='text/html' charset='UTF-8' /><style>a {color:#9b252e;}\nimg.size-full{width:100%; height:auto;} iframe{width:100%; height:auto;} img{display: inline; height: auto; max-width: 100%;}</style></head><body>";
String end = "</body></html>";

webView.loadDataWithBaseURL(null, start + myHTMLContent + end, null, "text/html; charset=UTF-8", null);

我的问题是:

  1. 什么原因会导致这个问题?
  2. 我该如何解决这个问题?
  3. 这可能与设备上当前安装的WebView版本有关吗?

编辑:我已经在stackoverflow上检查了所有相关的问题和答案。


请查看此链接:https://dev59.com/dnE85IYBdhLWcg3w3Xr6 - AndroidRuntimeException
@AgustinSivoplás 抱歉,但我在1.5年前检查过这个问题。我尝试了互联网上的所有方法,但仍未找到解决方案。 - Oğuzhan Döngül
3个回答

1
我建议先修复HTML,确保其没有错误。我不知道您放置了哪些内容,但标题中已经有几个错误:
  • 没有doctype;
  • 应写成content='text/html;charset='UTF-8',而不是content='text/html' charset='UTF-8'
  • 没有标题元素。
我倾向于认为问题与您显示的内容有关,因为外部保持不变,所以也要确保内部没有错误。
虽然这可能与WebView的版本有关,但由于您提到该问题发生在Android 4.0上,我认为它不仅仅是WebView的版本问题,因为在该Android版本上,它并未像最新版本那样从Google Play更新。

感谢您的回答,我会考虑您的建议并更新我的代码,等待用户反馈。 - Oğuzhan Döngül
我们有类似的问题... 有什么帮助吗? - Zbyszek
我遇到了同样的问题,当我的内容(一个HTML编码字符串)超过一定大小时,我会得到一个空白页面。我还没有找到任何解决方案。我已经添加了android:largeHeap="true" android:hardwareAccelerated="false",但仍然没有解决。有什么建议吗? - msc87

0

Google Chrome 浏览器应用程序的版本应该与 WebView 的版本相同。我曾经遇到过类似的问题,更新 Google Chrome 可以解决。


0

针对 Build.VERSION_CODES.Q 或更高版本的应用程序必须使用 base64 或将内容中的任何 # 字符编码为 %23,否则它们将被视为内容的结尾,并且剩余文本将用作文档片段标识符。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接