2015-09-10 8 views
5

Używam niestandardowej strony błędu, aby pokazać, kiedy internet nie jest dostępny w WebView. Poniżej znajduje się kod, którego używam. To nie działa. Po prostu pokazuje stronę niedostępną na stronie, gdy Internet nie jest dostępny.Funkcja OnRecivedError nie wyświetla niestandardowej strony błędu

każdym razie logcat pokazuje mi ten błąd:

I/chromium﹕ [INFO:CONSOLE(0)] "Not allowed to load local resource: file:///android_asset/webkit/android-weberror.png", source: data:text/html,chromewebdata (0) 

mój kod jest

private class myWebViewBrowser extends WebViewClient { 
    /*@Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) { 
     view.loadUrl(url); 
     return true; 
    }*/ 
    @Override 
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 
     super.onReceivedError(view, request, error); 
     Log.e(String.valueOf(error.getErrorCode()), error.getDescription().toString()); 
     view.loadUrl("file:///android_asset/error.html"); 
    } 
} 
+0

Zrobiłem to samo, pokazując fragment na stronie internetowej – Beloo

Odpowiedz

1

To może być pomocne:

https://groups.google.com/forum/#!topic/android-developers/4g6H0vr5_0E

Spróbuj następującego kodu:

private class myWebViewBrowser extends WebViewClient { 

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

    Log.e(String.valueOf(error.getErrorCode()), error.getDescription().toString()); 
    view.loadDataWithBaseURL("file:///android_asset/", html, "text/html","utf-8", null); 
    } 
} 
+0

Czy masz pojęcie, dlaczego mój kod nie działa? Mam na myśli to, że działa czasem, więc nie będzie to problem 'view.loadUrl. To musi być coś innego. – defiant

1
@Override 
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { 
     Log.e(String.valueOf(error.getErrorCode()), error.getDescription().toString()); 
     view.loadDataWithBaseURL("file:///android_asset/", html, "text/html","utf-8", null); 
     } 
3

można zmienić

view.loadUrl(...); 

do

view.loadDataWithBaseURL("file:///android_asset/", html, "text/html","utf-8", null); 

gdzie

  • "file: /// android_asset /" ma swoją bazę URL dla html obciążenia

  • html to html ciąg

  • "text/html" to typ MIME dla treści

  • "UTF-8" jest kodowania styl

  • i ostatni url jako null, jej za odniesienie do historii.