2012-10-22 2 views
19

Mam widok internetowy w mojej aplikacji, jednak czasami z powodu braku połączenia przeglądarka internetowa nie ładuje się, a domyślna strona jest niedostępna. Chcę wyświetlić alert alert, jeśli nie udało się wczytać przeglądarki. Czy mimo to mogę sprawdzić (być może w funkcji shouldOverridePageLoad), czy przeglądanie sieci zostało pomyślnie załadowane? Dzięki jeszcze razJak sprawdzić, czy przeglądanie stron internetowych nie powiodło się (strona główna)?

Odpowiedz

46

Użyj WebClient na widoku internetowej następująco:

webView.setWebViewClient(new WebViewClient(){ 

@Override public void onReceivedError(WebView view, WebResourceRequest request, 
     WebResourceError error) { 
    super.onReceivedError(view, request, error); 
    // Do something 
    } 
}); 
+1

Dzięki człowieku. Muszę przeoczyć tę metodę w kliencie webview. Zaznaczę to jako odpowiedź. – HAxxor

+0

i "onReceivedSslError" – Hugo

+3

Powinieneś rzucić okiem na tę odpowiedź: http://stackoverflow.com/a/33419123/149008 od onReceivedError jest przestarzałe w API23 – nacho4d

9

Rozszerzenie na odpowiedź Damiana na temat korzystania WebViewClient istnieją cztery słuchaczy dostępne na WebViewClient celu sprawdzenia powodzenia i niepowodzenia wczytywania stron internetowych.

webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
    } 

    @Override 
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 
    } 

    @Override 
    public void onReceivedHttpError(
      WebView view, WebResourceRequest request, WebResourceResponse errorResponse) { 
    } 

    @Override 
    public void onReceivedSslError(WebView view, SslErrorHandler handler, 
            SslError error) { 
    } 
}); 

Istnieje również:

@Override 
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
    } 
}); 

która jest zastąpiona jego przeciążenia mowa w powyższym kodzie.

Powiązane problemy