Stoppt das laden im webViewClient
In meinem WebView, ich habe mehrere links im header. Im Offline-Modus, ich darf nicht zulassen, dass die Seite neu laden und halten die Seite so wie Sie ist und dann, informieren Sie die Benutzer über das internet Verbindung. Ich bin in der Lage zu fangen links, bevor es lädt mit shouldOverrideUrlLoading
wenn ich auf andere links. Aber wenn ich auf den gleichen link, shouldOverrideUrlLoading
ist nicht gefeuert, stattdessen onLoadResource
Methode wird zuerst aufgerufen. In dieser Methode habe ich versucht webView.stopLoading();
aber es arbeitet weiter und Feuer onReceivedError
Methode und zeigt Fehler Bericht auf der Seite.
Hier ist mein WebClient:
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(MyApplication.getInstance().isOnline()) {
return false;
}
Toast.makeText(getApplicationContext(), "Please check Internet connection and try again.", Toast.LENGTH_SHORT).show();
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.i("ON_PAGE_START", "RUNNING ============>" + url);
if (MyApplication.getInstance().isOnline()) {
super.onPageStarted(view, url, favicon);
} else {
webView.stopLoading();
}
}
@Override
public void onLoadResource(WebView view, String url) {
if (MyApplication.getInstance().isOnline()) {
super.onLoadResource(view, url);
} else {
webView.stopLoading();
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
view.stopLoading();
Toast.makeText(getApplicationContext(), "Please check Internet connection and try again.", Toast.LENGTH_SHORT).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
Was ich will, ist in der Lage sein, um sicherzustellen, dass die urls nicht gefeuert wird, wenn es offline ist, und informieren darüber.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Seine ein bekanntes Problem und es gibt einen bug berichtet für Sie.
http://code.google.com/p/android/issues/detail?id=2887
Eine Reihe von Problemumgehungen vorgeschlagen worden. z.B.
Zusätzlich, registrieren Sie einen BroadcastReceiver zu hören-Netzwerk Zustandsänderungen und wenden Sie die Lösung, wenn die Konnektivität verloren.
Netzwerk-listener Android
onPageStarted
und versuchtestopLoading()
ohne Erfolg. 2, dachte ich eigentlich, aber in meinem Fall könnte es sein, gefährlich, um sich auf<a>
tag, da der server könnte sich ändern, die Struktur der Seite. Aber der 3. wirklich bezaubert mich. Wie nicht es kommen mir in den Sinn, ich weiß nicht :). Ich 'll versuchen Sie es nächste Woche, und lassen Sie Sie wissen, und möglicherweise markieren der Antwort als akzeptiert.loadDataWithBaseURL
ich natürlich prüfen, ob Daten geladen wurden oder nicht. Ein Nachteil ist, dass Benutzer können beachten Sie die web-view beschweren sich über das Netzwerk und die Daten laden.Ich weiß, das ist schon ein Alter Beitrag, aber danke für diesen Beitrag, das hat mir geholfen, das Problem zu lösen!!!
Ich hatte ein ähnliches Problem und stopLoading mein Problem gelöst 🙂
shouldOverrideUrlLoading wird aufgerufen, wenn es geht zu einer neuen Seite oder wenn es eine Weiterleitung ist aber nicht anders wie für die ex-Klick auf iframe etc. Ich wollte erreichen, das ähnlich wie das Verhalten meiner app, und ich erkannte, dass onPageStarted heißt aber nicht shouldOverrideUrlLoading.
Ich nicht überschreiben onLoadResource aber nur onPageStarted seit onLoadResource wird aufgerufen, nachdem onPageStarted. OnPageStarted überprüft, ob offline-und nicht, um die Last in diesem Fall. hoffe, das jemand hilft.
Ich denke, in onLoadRessource(..) und onPageStarted() es sollte weiter sein
in Ihrem else{..}