Per determinare quando il dispositivo ha una connessione di rete, richiedere l'autorizzazione <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
e quindi è possibile verificare con il codice seguente. Prima definisci queste variabili come variabili di classe.
private Context c;
private boolean isConnected = true;
nel metodo onCreate()
inizializzare c = this;
Poi verificare la connettività.
ConnectivityManager connectivityManager = (ConnectivityManager)
c.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivityManager != null) {
NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
if (ni.getState() != NetworkInfo.State.CONNECTED) {
// record the fact that there is not connection
isConnected = false;
}
}
Poi per intercettare il WebView
requets, si potrebbe fare qualcosa di simile a quanto segue. Se lo si utilizza, è probabile che si desideri personalizzare i messaggi di errore per includere alcune delle informazioni disponibili nel metodo onReceivedError
.
final String offlineMessageHtml = "DEFINE THIS";
final String timeoutMessageHtml = "DEFINE THIS";
WebView browser = (WebView) findViewById(R.id.webview);
browser.setNetworkAvailable(isConnected);
browser.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (isConnected) {
// return false to let the WebView handle the URL
return false;
} else {
// show the proper "not connected" message
view.loadData(offlineMessageHtml, "text/html", "utf-8");
// return true if the host application wants to leave the current
// WebView and handle the url itself
return true;
}
}
@Override
public void onReceivedError (WebView view, int errorCode,
String description, String failingUrl) {
if (errorCode == ERROR_TIMEOUT) {
view.stopLoading(); // may not be needed
view.loadData(timeoutMessageHtml, "text/html", "utf-8");
}
}
});
Ho dato un'occhiata agli errori che hai citato e ho aggiornato la mia risposta per affrontarli. Potresti voler familiarizzare con Java prima di andare troppo lontano con un progetto Android. Una buona base Java aiuterà enormemente nel debugging di questi piccoli errori e nel tentativo di individuare i problemi. Fammi sapere se incontri altri problemi con questo. – Brian
Brian, grazie per dare un'occhiata al codice, GRAZIE di apprezzare la tua assistenza. Ho finito per utilizzare il codice "onReceivedError" e invece di caricare una stringa "timeoutMessageHtml", ho l'app "setContentView()" in un nuovo layout lineare che ho creato che ha un messaggio di errore personalizzato. Inoltre, sei corretto al 100% per avere una buona base Java. Ho letto un paio di libri in Java e attualmente sto prendendo una lezione di Java, tuttavia apprendo meglio, quindi ho capito quale modo migliore per imparare Java rispetto alla creazione di un'app. Di nuovo. –
Sono felice di essere d'aiuto e felice che tu abbia funzionato! – Brian