In meinem WebView habe ich mehrere Links im Header. Im Offline-Modus darf ich nicht erlauben, die Seite neu zu laden und diese Seite so zu belassen, wie sie ist, und dann die Benutzer über die Internetverbindung informieren. Ich bin in der Lage, Links zu fangen, bevor es lädt shouldOverrideUrlLoading
, wenn ich andere Links klicke. Aber wenn ich auf denselben Link klicke, wird shouldOverrideUrlLoading
nicht ausgelöst, stattdessen wird onLoadResource
Methode zuerst aufgerufen. In dieser Methode habe ich versucht webView.stopLoading();
, aber es funktioniert weiter und Feuer onReceivedError
Methode und zeigt Fehlerbericht auf der Seite.Laden in WebViewClient stoppen
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 Urls nicht gefeuert werden, wenn sie offline ist und darüber informieren.
Danke für die großartige Antwort. Nun, für ** 1 **, wie Sie in meinem Code oben sehen können, überschrieb ich 'onPageStarted' und versuchte' stopLoading() 'ohne Erfolg. ** 2 **, ich habe darüber nachgedacht, aber in meinem Fall könnte es gefährlich sein, sich auf das ''-Tag zu verlassen, da der Server die Struktur der Seite ändern könnte. Aber der ** 3. ** bezauberte mich wirklich. Wie kam es mir nicht in den Sinn, ich weiß es nicht :). Ich werde es nächste Woche versuchen und Sie wissen lassen, und möglicherweise die Antwort als akzeptiert markieren. – boburShox
Hallo, ich denke, ich kann das Touch-Ereignis nicht deaktivieren, weil ich eine der Seiten zwischenspeichern und im Offline-Modus laden muss. Wenn ich Berührungsereignisse deaktiviere, kann ich sie nicht laden oder was? Wir haben uns eine bestimmte Idee ausgedacht, die nicht sehr gut ist, aber im Moment unseren Bedürfnissen entspricht. Danke nochmal – boburShox
@boburShox: Bitte teilen Sie die Idee – LokiDroid