2013-08-22 12 views
14

Wdrażam aplikację webview w Androidzie. Kiedy próbuję załadować https url jeden lub dwa razy to kończy działanie. Agian próbuje załadować https url strona jest niedostępna. znajdź poniżej obraz, co mam.Podgląd strony nie jest w stanie załadować adresu URL https w systemie Android?

enter image description here

po kliknięciu na ten adres URL ponownie, to pokazuje Websit.

Użyłem poniższego kodu do załadowania adresu 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(); 
     } 
    }); 

prosimy wszelkie Chłopaki pomóc .......

góry dzięki

+0

tak, dodałem uprawnienie INTERNET – Hareesh

+0

To działa dla mnie. Sprawdź uprawnienia sieciowe. –

+0

@Hareesh Mam również tested.check ur dostępność Internetu w telefonie. – TheFlash

Odpowiedz

8

Dodaj ustawienia Internetu manifest.xml

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

i check można uzyskać dostęp do Internetu na twoim urządzeniu.

-4

Spróbuj

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

... i dlaczego to powinno pomóc? – Selvin

1

Jedną z możliwości jest tutaj sytuacja wyścigu.

Ładujesz https://www.facebook.com/ przed skonfigurowaniem WebViewClient, więc istnieje możliwość, że twoja implementacja OnReceivedSslError() nigdy nie zostanie wywołana, jeśli otrzymasz wystarczająco szybką odpowiedź z Facebooka.

To wyjaśnia, dlaczego działa dla niektórych osób, nie dla innych, i zawsze działa po ponownym załadowaniu strony.

Ponadto, powinieneś po prostu zwracać wartość false z metody shouldOverrideUrlLoading(), jeśli chcesz załadować stronę zamiast próbować ponownie załadować stronę - może to spowodować nieskończoną rekursję/awarię - prawdopodobnie w zależności od czasu.

+0

czy masz jakiś kod? –

+0

Kod wymieniony w powyższym OP jest podobny do mojego, z wyjątkiem ładowania adresu URL * po * WebView, WebViewClient został poprawnie skonfigurowany - i zwracam wartość false z metody shouldOverrideUrlLoading(). – MZB

2

Dodaj tę metodę przesłaniania do swojej implementacji WebViewClient. Musisz go skompilować z Androidem SDK 2.2 (poziom API 8) lub nowszym. Metoda pojawia się w publicznym pakiecie SDK od wersji 2.2 (poziom API 8), ale testowaliśmy go na urządzeniach z wersją 2.1, 1.6 i 1.5 i działa również na tych urządzeniach (więc zachowanie było tam od dawna).

WebView.setWebViewClient(new WebViewClient() { 

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

     handler.proceed(); 

    } 
    }); 
12

spróbuje użyć poniżej atrybuty:

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

to działało! http://stackoverflow.com/questions/7416096/android-webview-not-loading-https-url/28668862#28668862 – KOTIOS

+2

Ta linia: settings.setDomStorageEnabled (true); załatwiłem sprawę w moim przypadku. Wielkie dzięki. – Virthuss

+1

Również dla mnie setDomStorageEnabled zrobił lewę! – olleh

-3

Dodaj Twój plik manifestu

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

Gdy kiedykolwiek dostępu do treści internetowych muszą uzyskać pozwolenie internetu to tylko będzie ładować.

5

Usuń ten ciąg:

super.onReceivedSslError(view, handler, error); 

iw ten sposób

public boolean shouldOverrideUrlLoading(WebView view, String url) { 

kolej powrót do fałszywego
tak:

return false; 

Pomogło mi

3

Należy usunąć ten

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

grudnia 2016 Odpowiedź:

Jeśli tak się dzieje tylko na niektórych urządzeniach z Androidem 5+ i tylko na niektórych stronach, jest to najprawdopodobniej spowodowane tym chromu błędu:

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

roztwór jest albo:

  • powiedzieć klientom zaktualizować webview do 55+ (może nie być łatwe na wszystkich urządzeniach)
  • powiedzieć klientom, aby przenieść swój zegar systemowy do tyłu kilka tygodni (nie ładny roztwór)
  • dostać zakaz Symantec cert
Powiązane problemy