Лучший способ сделать это - подключить логическое значение, которое сообщит вам, если у вас есть интернет, прежде чем что-то делать (это просто для того, чтобы отключить ваш счетчик, поскольку у firestore есть автономные функции, такие как firebase)
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;
}
поэтому вы должны сначала проверить, если у вас есть активное соединение, этот метод будет пинговать google.com и проверить подключение к интернету, если через 1,5 секунды он не будет доступен, он вернет false
, поэтому вы должны сделать что-то вроде этого(псевдокод)
if(hasActiveInternetConnection)
doyourfirebaseuploadstuff
else
spinner.dismiss()
Toast(please check your internet connection and try again)
Не забудьте добавить свои интернет-разрешения в манифест
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
РЕДАКТИРОВАТЬ:
Еще один крутой метод, возможно, более читабельный для кого-то, может быть такимодин
public boolean isInternetWorking() {
boolean success = false;
try {
URL url = new URL("https://google.com");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setConnectTimeout(10000);
connection.connect();
success = connection.getResponseCode() == 200;
} catch (IOException e) {
e.printStackTrace();
}
return success;
}
он просто работает как другой, вместо этого он просто будет ждать 10 секунд, пока не вернется интернет-статус
счастливое кодирование!