Nella mia WebView, ho più collegamenti nell'intestazione. In modalità Offline, non devo permettere di ricaricare la pagina e mantenere quella pagina così com'è e quindi informare gli utenti sulla connessione internet. Sono in grado di catturare i collegamenti prima che carichi utilizzando shouldOverrideUrlLoading
se faccio clic su altri collegamenti. Ma se clicco sullo stesso link, shouldOverrideUrlLoading
non viene sparato, viene invece chiamato prima il metodo onLoadResource
. In questo metodo ho provato webView.stopLoading();
ma continua a funzionare e spara al metodo onReceivedError
e mostra la segnalazione degli errori nella pagina.interrompe il caricamento in webViewClient
Ecco il mio 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);
}
});
Quello che voglio è essere in grado di garantire che gli URL non vengono licenziati se non è in linea e informare su questo.
Grazie per la grande risposta. Bene, per ** 1 **, come puoi vedere nel mio codice sopra, ho fatto override di 'onPageStarted' e ho provato' stopLoading() 'senza successo. ** 2 **, in realtà ci ho pensato, ma nel mio caso potrebbe essere _dangerous_ fare affidamento sul tag ' 'dal momento che il server potrebbe cambiare la struttura della pagina. Ma il ** 3 ** mi ha davvero affascinato. Come non mi è venuto in mente, non lo so :). Ci proverò la settimana prossima e ti faccio sapere, e forse segnerò la risposta come accettata. – boburShox
Ciao, penso di non poter disabilitare l'evento di tocco, perché devo memorizzare nella cache una delle pagine e caricare in modalità offline. Se disattivo gli eventi tattili, non potrò caricarlo, o cosa? Abbiamo avuto un'idea specifica che non è molto buona, ma adeguata ai nostri bisogni per il momento. Grazie ancora – boburShox
@boburShox: Si prega di condividere l'idea – LokiDroid