Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webview无法在android中加载https url?_Android_Android Webview_Httpsurlconnection - Fatal编程技术网

Webview无法在android中加载https url?

Webview无法在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

我正在android中实现webview应用程序。当我尝试加载https url一次或两次时,将完成活动。Agian尝试加载https url时显示网页不可用。请找到下面的图片我得到了什么

当我再次单击该url时,它会显示它所在的网站

我使用下面的代码加载url

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+(在所有设备上可能并不容易)
  • 告诉客户将系统时钟向后拨几周(这不是一个好的解决方案)
  • 获取非赛门铁克证书

是的,我添加了互联网许可,它为我工作。请检查您的网络权限。@Hareesh我也进行了测试。检查手机中的互联网可用性。如果您来自谷歌,请从2016年开始更新:如果您仅在Android 5+上出现这种情况,并且无法以合理的方式解释,这是由于!。。。为什么会有帮助呢?上面OP列出的代码与我的代码类似,只是在WebView、WebViewClient正确设置后加载URL—我从shouldOverrideUrlLoading()返回false。这很有效!此行:settings.setDomStorageEnabled(true);在我的情况下,我成功了。谢谢。
super.OnReceiveSslError(view,handler,error);