2015-09-10 7 views
5

Sto usando onReceivedError con una pagina di errore personalizzata per mostrare quando internet non è disponibile in un WebView. Di seguito è riportato il codice che uso per questo. Non funziona. Mostra semplicemente la pagina web non disponibile quando Internet non è disponibile.OnRecivedError non mostra la pagina di errore personalizzata

In ogni caso il logcat mi mostra questo errore:

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

il mio codice è

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

Ho fatto la stessa cosa mostrando frammento su una webview – Beloo

risposta

1

Questo potrebbe essere utile:

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

Prova seguente codice:

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

Hai idea del motivo per cui il mio codice non funziona? Voglio dire che funziona a volte, quindi non sarà il problema di 'view.loadUrl'. Deve essere qualcos'altro. – 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

è possibile modificare

view.loadUrl(...); 

a

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

dove

  • "file: /// android_asset /" è il vostro URL di base per il carico html

  • html è la stringa di codice HTML

  • "text/html" è tipo MIME per i contenuti

  • "utf-8" è la codifica di stile

  • e ultimo URL, null, la sua per riferimento storico.