web-dev-qa-db-ja.com

WebviewはAndroidでhttps URLをロードできませんか?

Androidでwebviewアプリケーションを実装しています。 https urlを1回または2回ロードしようとすると、-アクティビティが終了しますになります。 Agianがロードしようとしていますhttps url Webページが利用できないことを示しています。下の画像を見つけてください。

enter image description here

そのURLをもう一度クリックすると、Webサイトが表示されます。

以下のコードを使用して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();
        }
    });

みんな助けてください…….

前もって感謝します

15
Hareesh

以下の属性を使用してみてください:

        webView = (WebView) findViewById(R.id.webView1);
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setDomStorageEnabled(true);
12
KOTIOS

Manifest.xmlにインターネット設定を追加します

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

そして、あなたはあなたのデバイスでインターネットにアクセスできますか?.

8
CodingRat

この文字列を削除します。

super.onReceivedSslError(view, handler, error);

そしてこの方法では

public boolean shouldOverrideUrlLoading(WebView view, String url) {

falseに戻す
このような:

 return false;

それは私を助けました

5
Alex

これを削除する必要があります

super.OnReceiveSslError(view,handler,error);
3
Zahra.HY

このオーバーライドメソッドをWebViewClient実装に追加します。 Android SDK 2.2(API level 8)以降でコンパイルする必要があります。このメソッドは2.2(APIレベル8)以降のパブリックSDKに表示されますが、テスト済みです2.1、1.6、および1.5を実行しているデバイス、およびそれらのデバイスでも動作します(したがって、動作はずっとそこにありました)。

WebView.setWebViewClient(new WebViewClient() {

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

         handler.proceed(); 

     }
    });
2
zhangweiheb

ここでの1つの可能性は競合状態です。

WebViewClientをセットアップする前に https://www.facebook.com/ を読み込んでいるため、OnReceivedSslError()の実装が、十分な速さの応答を受け取った場合に呼び出されない可能性があります。フェイスブック。

これは、なぜそれが他の人ではなく一部の人のために機能するのかを説明し、ページがリロードされれば常に機能します。

また、ページをリロードしようとするのではなく、ページをロードしたい場合は、shouldOverrideUrlLoading()からfalseを返すだけでよいと思います。これにより、無限の再帰/クラッシュが発生する可能性があります。

1
MZB

2016年12月の回答:

これがAndroid 5+を備えた特定のデバイスでのみ、および特定のページでのみ発生する場合は、このクロムのバグが原因である可能性が高いです。

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

解決策は次のいずれかです。

  • ウェブビューを55以上に更新するようにお客様に伝えます(すべてのデバイスで簡単ではない場合があります)
  • システムクロックを数週間遅らせるようにお客様に伝えます(Niceソリューションではありません)。
  • シマンテック以外の証明書を取得する
0
jakub.g