我需要在WebView中显示一个网站。我经历了几乎所有可能的解决方案,但我的WebView没有正确显示网站。以下是我的代码:
progDailog = ProgressDialog.show(this, "Loading","Please wait...", true);
progDailog.setCancelable(false);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
progDailog.show();
view.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView view, final String url) {
progDailog.dismiss();
}
});
webView.loadUrl("https://www.site.ru/login");
如果我在移动浏览器中复制网址“https://www.site.ru/login”,那么当我尝试在WebView中加载相同的网址时,它会在Android应用中正确显示,但是它会显示progressBar,然后WebView屏幕中的所有内容都显示为白色和空白
UPD: 我的xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/sign_up_web_view"
android:layout_width="match_parent"
android:layout_height="match_parent"></WebView>
</RelativeLayout>
答案 0 :(得分:1)
首先,创建一个扩展WebViewClient
的类,并将其设置为忽略SSL错误:
// SSL Error Tolerant Web View Client
private class SSLWebViewClient extends WebViewClient {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed(); // Ignore SSL certificate errors
}
}
然后使用您的Web视图对象,将其Web视图客户端设置为覆盖类的实例:
webView.setWebViewClient(
new SSLWebViewClient();
);
检查此thread
答案 1 :(得分:0)
如果 Logcat 显示类似于以下内容的错误:
I/chromium: [INFO:CONSOLE(1)] "TypeError: Cannot read property 'getItem' of null"
I/chromium: [INFO:CONSOLE(9)] "Uncaught TypeError: Cannot read property 'getItem'
通过添加以下内容启用 Dom 存储:
webView.settings.setDomStorageEnabled(true);
这似乎允许浏览器存储页面元素的 DOM 模型,以便 Javascript 可以对其进行操作。
答案 2 :(得分:0)
主要是因为不安全的连接或 SSL 错误,所以您需要实现一个扩展 SSLWebViewClient 类并覆盖 onReceivedSslError 方法并忽略 ssl 错误的类:
class SSLWebViewClient : WebViewClient() {
override fun onReceivedSslError(view: WebView?, handler: SslErrorHandler?, error: SslError?) {
handler?.proceed()
}
}
然后:
在onCreate
onCreate() {
...
webView = findViewById(R.id.webView)
webView.webViewClient = SSLWebViewClient()
webView.settings.javaScriptEnabled = true
webView.settings.domStorageEnabled = true
webView.settings.builtInZoomControls = true
...
}