Android: so überprüfen Sie für das erfolgreiche laden der url bei der Verwendung von webview.loadUrl
In webview android ich versuche, laden Sie eine url, und um zu prüfen, ob die Last dieser url ist erfolgreich abgeschlossen (internet-Verbindung verfügbar war, wurde der server usw) ich hatte den Eindruck, dass webview.loadUrl würde Ausnahmen, aber falsch! wie es explizit heißt es in hier "eine exception wird NICHT geworfen".
Also, wie kann ich überprüfen, um zu sehen, ob webview.loadUrl nicht ?
- Kannst du bitte markieren Sie die Antwort als akzeptiert, wenn es geholfen hat, Ihr problem lösen. Dank
- Sicher, bitte geben Sie mir Zeit, um es zu testen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Leider gibt es noch keinen einfachen Weg in die "Webansicht" aus, um sicherzustellen, dass alles auf die Seite erfolgreich geladen wurden. Wir sind Hoffnung für eine bessere API zu kommen in zukünftigen Versionen. Lassen Sie mich erklären, was Sie jetzt tun kann.
Zunächst, um zu erkennen, keine Probleme, die verhindern, dass die "Webansicht" aus, eine Verbindung zu dem server für das laden der Haupt-Seite (z.B. schlechte domain-Namen, I/O-Fehler, etc.), sollten Sie verwenden
WebViewClient.onReceivedError
Rückruf als andere Menschen richtig zu deuten:Wenn die Verbindung zum server erfolgreich war, und die Hauptseite war abgerufen und analysiert werden, erhalten Sie
WebView.onPageFinished
Rückruf, so müssen Sie auch diese in IhremWebViewClient
Unterklasse:Nachteil hier ist, dass, wenn Sie erhalten haben, eine HTTP-Fehlermeldung vom server (z.B. einen 404-oder 500-Fehler), dieses callback wird aufgerufen sowieso, es ist nur der Inhalt, den Sie bekommen, in Ihrem WebView wird ein server-error-Seite. Menschen schlagen verschiedene Möglichkeiten, wie Sie damit umgehen, finden Sie hier die Antworten: Wie kann ich das überprüfen von Android WebView, ob eine Seite eine "404-Seite nicht gefunden"? im Grunde, es hängt wirklich davon ab, was Sie erwarten, dass eine "gute" Seite und eine "Fehler" - Seite. Leider gibt es derzeit keine Möglichkeit für die app, um den HTTP-Antwort-code von WebView.
Rückrufe
WebViewClient.onPageStarted
undWebViewClient.onProgressChanged
sind nur nützlich, wenn Sie möchten, zeichnen Sie einen Fortschrittsbalken, wie Sie beim laden der Seite.Beachten Sie auch, dass die Art und Weise des überwiegenden
WebViewClient.shouldOverrideUrlLoading
dass Menschen in der Regel vorschlagen, ist nicht richtig:Was nur wenige Entwickler wissen, ist, dass das callback wird auch aufgerufen, für Hilfsrahmen mit nicht-https-Schemata. Wenn Sie auf etwas stoßen wie
<iframe src='tel:1234'>
Sie werden am Ende der Ausführungview.loadUrl('tel:1234')
und Ihre app erscheint eine Fehler-Seite, da WebView nicht wissen, wie zu ladentel:
URL.Es wird empfohlen, einfach false zurückgeben, von der Methode, wenn Sie möchten, WebView zu tun, der laden:
Dies bedeutet nicht, sollten Sie nicht rufen Sie
WebView.loadUrl
ausshouldOverrideUrlLoading
überhaupt. Das spezifische Muster zu vermeiden ist dabei unbedingt für alle URLs.onRecievedError()
können Sie überprüfen, ob die fehlerhafte url entspricht der original-url Sie geladen in den WebView und finden Sie heraus, wenn die Haupt-Dokument nicht geladen.onPageFinished
und andere Rückrufe.dann kann man
Für den Fehler-Teil können Sie überschreiben die
onReceivedError
MethodeKönnen Sie überprüfen, ob eine URL geladen wird erfolgreich mithilfe
onProgressChanged()