Webview无法在android中加载https url?
我正在android中实现webview应用程序。当我尝试加载https url一次或两次时,将完成活动。Agian尝试加载https url时显示网页不可用。请找到下面的图片我得到了什么 当我再次单击该url时,它会显示它所在的网站 我使用下面的代码加载urlWebview无法在android中加载https url?,android,android-webview,httpsurlconnection,Android,Android Webview,Httpsurlconnection,我正在android中实现webview应用程序。当我尝试加载https url一次或两次时,将完成活动。Agian尝试加载https url时显示网页不可用。请找到下面的图片我得到了什么 当我再次单击该url时,它会显示它所在的网站 我使用下面的代码加载url webView = (WebView) findViewById(R.id.webView); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("h
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("https://www.facebook.com");
webView.clearView();
webView.measure(100, 100);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@SuppressLint("NewApi")
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
// this will ignore the Ssl error and will go forward to your site
handler.proceed();
error.getCertificate();
}
});
请大家帮帮忙
提前感谢在manifest.xml中添加internet设置
<uses-permission android:name="android.permission.INTERNET" />
并检查您是否可以在设备上访问internet 试试这个
WebView webview = (WebView)findViewById(R.id.webView);
Webview.setBackgroundColor(0);
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("https://www.facebook.com");
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
这里的一种可能性是比赛条件 您是在设置WebViewClient之前加载的,因此如果您从facebook获得足够快的响应,OnReceivedSlerror()的实现可能永远不会被调用 这可以解释为什么它对某些人有效,而对其他人无效,并且在重新加载页面时总是有效
此外,如果希望加载页面而不是尝试重新加载页面,我认为您应该从shouldOverrideUrlLoading()返回false,这可能会导致无限递归/崩溃,这可能取决于时间。将此重写方法添加到WebViewClient实现中。您需要使用Android SDK 2.2(API级别8)或更高版本编译它。该方法从2.2(API级别8)开始出现在公共SDK中,但我们已经在运行2.1、1.6和1.5的设备上对其进行了测试,并且它也在这些设备上工作(因此很明显,这种行为一直存在)
尝试使用以下属性:
webView = (WebView) findViewById(R.id.webView1);
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setDomStorageEnabled(true);
添加您的清单文件
<uses-permission android:name="android.permission.INTERNET" />
当您访问web内容需要获得internet权限时,只有它才会加载。删除此字符串:
super.onReceivedSslError(view, handler, error);
在这种方法中public boolean shouldOverrideUrlLoading(WebView view, String url) {
将return设置为false像这样:
return false;
它帮助了我你应该删除这个
super.OnReceiveSslError(view,handler,error);
2016年12月答复:
如果这种情况只发生在Android 5+的某些设备上,并且只发生在某些页面上,那么很可能是由于这个chromium bug造成的:
解决办法是:
- 告诉客户将webview更新为55+(在所有设备上可能并不容易)
- 告诉客户将系统时钟向后拨几周(这不是一个好的解决方案)
- 获取非赛门铁克证书
super.OnReceiveSslError(view,handler,error);