2016-08-04 46 views
0

Ich habe versucht, zu überprüfen, ob die Seite selbst, und nicht die sekundären Ressourcen, Probleme mit dem Laden hatte, indem Sie in meinem WebView onReceivedError überschreiben.Wie überprüft man, ob die Seite selbst einen Fehler beim Laden hatte, mit API 23?

myWebView.setWebViewClient(new WebViewClient() { 
    //... 

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

     //do something with error.getErrorCode() 

    } 

    //... 
}); 

Sobald jedoch die Seite Last abgeschlossen ist, auch wenn die Seite scheint richtig manchmal geladen worden zu sein, bekomme ich Junk-Anrufe von onReceivedError und somit nicht in der Lage, wenn die Seite nicht wirklich (zB geladen ist, um zu bestimmen, Cache-Miss der Seite selbst).

Was kann ich dagegen tun?

+0

Ich nehme an, ich könnte einige doppelte Beiträge verfehlt haben, die dieses Problem ansprechen. Oder es hat keinen Sinn, dies als separate Fragen und Antworten zu sehen, und ich hätte eine bestehende Frage zu einem umfassenderen Problem (nicht genau API 23) auswählen sollen, um die Antwort zu veröffentlichen. Oder es ist einfach zu trivial, um ein separates Q & A zu sein (kann darüber aber nicht beurteilen, kein erfahrener Entwickler in diesem Bereich). Bitte kommentiere dann, und ich werde die Q & A entfernen. Ich habe gerade festgestellt, dass die Suche mir keine Lösung liefert und versuchte, das selbst zu tun (scheint, dass ich Erfolg hatte). – nicael

Antwort

0

Seit API 23 wurde diese Methode geändert und jetzt aufgerufen, wann immer etwas, auch sekundäre Ressourcen (d. H. Bilder/Stylesheets/Skripts) Fehler beim Laden haben.

Die Lösung besteht darin, zu überprüfen, ob die primäre URL der angeforderten URL entspricht, und nur dann Aktionen auszuführen.

myWebView.setWebViewClient(new WebViewClient() { 
    //... 

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

     if(request.getUrl().toString().equals(myWebView.getUrl())){ 
      //that's the page that throws the error 
     } 

    } 

    //... 
});