После некоторого поиска в Google и просмотра некоторых статей я думаю, что лучший способ сделать это правильно - проверить, подключен ли клиент к inte rnet.
Метод 1
public static boolean isNetworkAvailable (Context context) {
if (connectedToTheNetwork(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection)
(new URL("http://clients3.google.com/generate_204")
.openConnection());
urlc.setRequestProperty("User-Agent", "Android");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 204 &&
urlc.getContentLength() == 0);
} catch (IOException e) {
Log.e(TAG, "Error checking internet connection", e);
}
} else {
Log.d(TAG, "No network available!");
}
return false;
}
Источник
Метод 2
fun verifyAvailableNetwork(activity:AppCompatActivity):Boolean{
val connectivityManager=activity.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val networkInfo=connectivityManager.activeNetworkInfo
return networkInfo!=null && networkInfo.isConnected
}
Источник
Метод 3
val Context.isConnected: Boolean
get() {
return (getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager)
.activeNetworkInfo?.isConnected == true
}
Источник
Я не проверял их, но все они имеют смысл, и, честно говоря, я бы начал с 3-го до 1-го. Чем проще, тем лучше.
Надеюсь, все получится!