web-dev-qa-db-de.com

Webview nicht in der Lage, https-URL in Android zu laden?

Ich implementiere eine Webview-Anwendung in Android. Wenn ich versuche https url ein- oder zweimal zu laden, beendet es die Aktivität . Agian versucht, https url zu laden. Die Webseite ist nicht verfügbar. Bitte finden Sie unter Bild, was ich habe.

enter image description here

Wenn ich erneut auf diese URL klicke, wird die Website angezeigt.

Ich habe den folgenden Code zum Laden der URL verwendet.

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();
        }
    });

bitte helfen Sie Jungs .......

Danke im Voraus

14
Hareesh

Versuchen Sie, folgende Attribute zu verwenden:

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

Fügen Sie in Ihrer manifest.xml Interneteinstellungen hinzu

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

und prüfen, ob Sie mit Ihrem Gerät auf das Internet zugreifen können. 

8
CodingRat

Diese Zeichenfolge löschen:

super.onReceivedSslError(view, handler, error);

und in dieser Methode

public boolean shouldOverrideUrlLoading(WebView view, String url) {

kehren Sie zurück zu falsch
so was:

 return false;

Es hat mir geholfen 

5
Alex

Sie sollten das entfernen

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

Fügen Sie diese überschreibende Methode Ihrer WebViewClient-Implementierung hinzu. Sie müssen es mit Android SDK 2.2 (API Level 8) oder höher kompilieren. Die Methode erscheint im öffentlichen SDK ab 2.2 (API-Ebene 8), wir haben sie jedoch auf Geräten getestet, auf denen 2.1, 1.6 und 1.5 ausgeführt wird, und sie funktioniert auch auf diesen Geräten (das Verhalten war also offensichtlich schon immer vorhanden).

WebView.setWebViewClient(new WebViewClient() {

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

         handler.proceed(); 

     }
    });
2
zhangweiheb

Eine Möglichkeit ist hier eine Rennbedingung. 

Sie laden https://www.facebook.com/ , bevor Sie den WebViewClient einrichten. Daher besteht die Möglichkeit, dass Ihre Implementierung von OnReceivedSslError () nie aufgerufen wird, wenn Sie eine schnelle Antwort von Facebook erhalten. 

Dies würde erklären, warum es für einige Leute funktioniert, nicht für andere, und funktioniert immer, wenn die Seite neu geladen wird. 

Ich denke, Sie sollten nur false von shouldOverrideUrlLoading () zurückgeben, wenn Sie möchten, dass die Seite geladen wird, anstatt die Seite neu zu laden. Dies kann zu einer unendlichen Rekursion/einem Absturz führen - möglicherweise abhängig vom Zeitpunkt.

1
MZB

Antwort vom Dezember 2016:

Wenn dies nur bei bestimmten Geräten mit Android 5+ und nur bei bestimmten Seiten der Fall ist, liegt dies höchstwahrscheinlich an diesem Chromfehler:

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

Die Lösung ist entweder

  • kunden auffordern, Webview auf 55+ zu aktualisieren (ist möglicherweise nicht auf allen Geräten einfach)
  • den Kunden auffordern, die Systemuhr einige Wochen zurückzustellen (keine schöne Lösung)
  • erhalten Sie ein nicht von Symantec zertifiziertes Zertifikat
0
jakub.g