android webview显示空白页面

Chr*_*ite 23 java eclipse android webview android-emulator

我有一个Android应用程序,我正在使用在android 2.3.3上运行的模拟器开发,嵌入式WebView在嵌套在linearlayout(垂直)的framelayout中.无论我使用什么代码,它实际上从未做过任何事情.我有Android应用程序设置为INTERNET的权限.即使在尝试加载HTML代码时也是如此.我得到一个空白的白页,没有任何错误.在logcat中也没有.

WebView wview = (WebView)findViewById(R.id.webView1);
wview.getSettings().setJavaScriptEnabled(true);
Run Code Online (Sandbox Code Playgroud)

我尝试了所有这三个尝试将任何内容加载到webview中:

wview.loadUrl("http://www.google.com");
wview.loadData("<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8");
wview.loadDataWithBaseURL(null, "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8",null);
Run Code Online (Sandbox Code Playgroud)

这三个都给了我相同的结果.没有.

有任何想法吗?

zio*_*npi 39

WebSettings settings = wbView.getSettings();
settings.setDomStorageEnabled(true);
Run Code Online (Sandbox Code Playgroud)

  • 我不得不同时使用它和`wbView.getSettings().setJavaScriptEnabled(true);` (5认同)
  • 这就是我的问题。webview 能够显示一些网页,但有一些其他页面的空白屏幕。添加这个解决了我的问题,谢谢! (2认同)

Vea*_*rji 13

这可能有点太晚了,但我想与你分享我的经验,因为我遇到了同样的问题并花了很多时间.

把你WebView放入RelativeLayout而不是放入FrameLayout.

我测试的内容:我WebViewonPageFinished()每次都被调用,但在屏幕上我得到了空白页面.从chrome://inspect WebView调试器我可以WebView通过按下inspect按钮"ping"我的,然后WebView立即刷新.我的想法 - WebView没有正确呈现FrameLayout,并RelativeLayout修复问题(甚至invalidate()requestLayout()调用没有帮助).


rid*_*doy 11

我想如果你编辑了一些代码,那就没问题了.看看我在下面的例子中是怎么做的.以这种方式为你试试..
用于显示网页

final WebView wbView = (WebView) findViewById(R.id.WebView);

WebSettings settings = wbView.getSettings();
settings.setJavaScriptEnabled(true); 
wbView.loadUrl("https://play.google.com/store/apps");
wbView.clearView();
wbView.measure(100, 100);
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
Run Code Online (Sandbox Code Playgroud)

用于显示HTML:
请参阅本教程..


Chr*_*eve 6

就我而言,这是因为我的 webview 尝试使用 HTTPS 加载页面,而证书不受信任。

您可以使用以下代码片段检查代码中是否存在这种情况:

@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
    handler.proceed();
}
Run Code Online (Sandbox Code Playgroud)

爪哇

override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
    handler?.proceed()
}
Run Code Online (Sandbox Code Playgroud)

科特林

然后,如果是这种情况,请快速删除该代码片段并参考文档进一步诊断问题,并可能将证书添加到您的密钥库中。


小智 5

而不是传递null,您应该传递一个空值String。例如:""
您应该这样称呼它:
wview.loadDataWithBaseURL("", "<HTML><BODY><H3>Test</H3></BODY></HTML>","text/html","utf-8","");


She*_*ani 5

如果仍然不起作用,请确保您在网址前添加了“http://”“https://” 。