Если вы используете OkHttpClient, вы можете использовать перехватчик.
Определите http-клиент таким образом, используя его перехватчик, который выбрасывает NoInternetException
OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
httpClient.connectTimeout(HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS);
httpClient.readTimeout(HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS);
httpClient.writeTimeout(HTTP_CLIENT_TIMEOUT, TimeUnit.SECONDS);
httpClient.addInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept (@NonNull Chain chain) throws
NoInternetException, InterceptorException
{
if (!Util.isNetworkAvailable(mContext)) {
throw new NoInternetException();
}
}
});
С помощью этой вспомогательной функции вы можете определить, доступна ли сеть:
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = null;
if (connectivityManager != null) {
activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
}
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Дайте мне знать, если это поможет;)