2013-08-22 2 views
14

Ich implementiere Webview-Anwendung in Android. Wenn ich versuche, https url ein- oder zweimal zu laden, beendet die Aktivität. Agian versucht zu laden https url es zeigt Webseite nicht verfügbar. bitte finden sie unter image was ich bekommen habe.Webview kann https URL in Android nicht laden?

enter image description here

Wenn ich wieder auf diese URL klicken, dann zeigt es die websit.

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 irgendwelche Hilfe Jungs .......

Vielen Dank im Voraus

+0

ja ich habe die INTERNET-Erlaubnis hinzugefügt – Hareesh

+0

Es ist für mich gearbeitet. Überprüfen Sie Ihre Netzwerkberechtigungen. –

+0

@Hareesh Ich habe auch getestet.Check Ihre Internetverfügbarkeit in Telefon. – TheFlash

Antwort

8

Internet-Einstellungen in Ihrem manifest.xml

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

und Check können Sie den Internet-Zugang hinzufügen auf deinem Gerät.

-4

Versuchen Sie, diese

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); 
+1

... und warum sollte es helfen? – Selvin

1

Eine Möglichkeit hier eine Race-Bedingung ist.

Sie laden https://www.facebook.com/, bevor Sie den WebViewClient einrichten, daher besteht die Möglichkeit, dass Ihre Implementierung von OnReceivedSslError() niemals 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.

Auch ich denke, Sie sollten nur false von shouldOverrideUrlLoading() zurückgeben, wenn Sie die Seite laden möchten, anstatt zu versuchen, die Seite neu zu laden - dies könnte eine unendliche Rekursion/Absturz verursachen - möglicherweise abhängig vom Timing.

+0

hast du einen Code? –

+0

Der vom obigen OP gelistete Code ist ähnlich wie bei mir, außer dem Laden der URL * nachdem * das WebView, WebViewClient richtig eingerichtet wurde - und ich gebe false von shouldOverrideUrlLoading() zurück. – MZB

2

Fügen Sie diese Überschreibungsmethode zu 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 Version 2.2 (API Level 8), aber wir haben es auf Geräten mit 2.1, 1.6 und 1.5 getestet und es funktioniert auch auf diesen Geräten (so offensichtlich war das Verhalten schon immer da).

WebView.setWebViewClient(new WebViewClient() { 

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

     handler.proceed(); 

    } 
    }); 
12

Try unten verwenden Attribute:

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

das hat funktioniert! http://stackoverflow.com/questions/7416096/android-webview-not-loading-https-url/28668862#28668862 – KOTIOS

+2

Diese Zeile: settings.setDomStorageEnabled (true); hat den Trick in meinem Fall gemacht. Danke vielmals. – Virthuss

+1

Auch für mich hat setDomStorageEnabled den Trick gemacht! – olleh

-3

Fügen Sie Ihre Manifest-Datei

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

Wann immer Sie Web-Content-Internet-Erlaubnis benötigen Zugriff dann wird es laden nur zu bekommen.

5

löschen string:

super.onReceivedSslError(view, handler, error); 

und in diesem Verfahren

public boolean shouldOverrideUrlLoading(WebView view, String url) { 

wiederum Rückkehr zu falschen
wie folgt aus:

return false; 

Es half mir

3

sollten Sie entfernen diese

super.OnReceiveSslError(view,handler,error); 
0

Dezember 2016 Antwort:

Wenn dies nur auf bestimmten Geräten mit Android geschieht 5+ und nur auf bestimmten Seiten, es ist höchstwahrscheinlich auf Grund dieser Chrom Fehler:

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

Die Lösung ist entweder:

  • Kunden sagen webview zu aktualisieren, um 55+ (möglicherweise nicht auf allen Geräten einfach sein)
  • Kunden erzählen ihre Systemuhr nach hinten ein paar Wochen (keine schöne Lösung)
  • erhält ein Nicht-Symantec bewegen cert