16

我正在android中实现webview应用程序。当我尝试加载https url一到两次时,它会完成活动。Agian 试图加载https 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();
        }
    });

请任何帮助家伙.......

提前致谢

4

9 回答 9

12

尝试使用以下属性:

        webView = (WebView) findViewById(R.id.webView1);
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
于 2015-02-23T07:38:15.607 回答
8

在 manifest.xml 中添加 Internet 设置

<uses-permission android:name="android.permission.INTERNET" />

并检查您是否可以在您的设备上访问互联网。

于 2013-08-22T10:31:19.030 回答
5

删除此字符串:

super.onReceivedSslError(view, handler, error);

在这种方法中

public boolean shouldOverrideUrlLoading(WebView view, String url) {

像这样返回false

 return false;

它帮助了我

于 2015-12-18T08:22:32.667 回答
3

你应该删除这个

super.OnReceiveSslError(view,handler,error);
于 2016-02-04T12:00:55.253 回答
2

Add this overriding method to your WebViewClient implementation. You'll need to compile it with Android SDK 2.2 (API level 8) or later. The method appears in the public SDK as of 2.2 (API level 8) but we've tested it on devices running 2.1, 1.6 and 1.5 and it works on those devices too (so obviously the behaviour has been there all along).

WebView.setWebViewClient(new WebViewClient() {

     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){

         handler.proceed(); 

     }
    });
于 2014-11-07T08:22:40.763 回答
1

这里的一种可能性是竞争条件。

您在设置 WebViewClient 之前正在加载https://www.facebook.com/ ,因此如果您从 facebook 获得足够快的响应,您的 OnReceivedSslError() 实现可能永远不会被调用。

这可以解释为什么它适用于某些人,而不适用于其他人,并且在重新加载页面时始终有效。

另外,如果您希望页面加载而不是尝试重新加载页面,我认为您应该从 shouldOverrideUrlLoading() 返回 false - 这可能会导致无限递归/崩溃 - 可能取决于时间。

于 2014-05-15T17:39:45.390 回答
0

2016 年 12 月答案:

如果这种情况仅发生在具有 Android 5+ 的某些设备上并且仅在某些页面上发生,则很可能是由于此 chromium 错误:

https://www.chromium.org/developers/androidwebview/webview-ct-bug

解决方案是:

  • 告诉客户将 webview 更新到 55+(在所有设备上可能并不容易)
  • 告诉客户将他们的系统时钟向后移动几周(不是一个好的解决方案)
  • 获得非赛门铁克证书
于 2016-12-12T11:22:29.543 回答
-3

添加清单文件

<uses-permission android:name="android.permission.INTERNET" />

当您访问网页内容需要获得互联网许可时,只有它会加载。

于 2015-04-30T04:58:01.293 回答
-5

尝试这个

 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);
于 2013-08-22T10:33:31.213 回答