Как проверить, находится ли устройство в состоянии подключения при подключении к Wi-Fi или мобильным данным?
Я занимаюсь разработкой приложения для Android, которое запускает мой веб-сервис при запуске приложения. Мое приложение в основном домашнее приложение устройства. То есть, когда пользователь перезагрузит устройство, Мое приложение появится перед ним.
Пока это здорово. Но я заметил, что при запуске приложения устройству требуется от 5 до 10 секунд, чтобы подключиться к Интернету. в то время как мой веб-сервис запускается до того, как Интернет будет установлен, выдает ошибку "Произошла ошибка, повторите попытку позже".
Что я хочу: хотя я показываю это сообщение, я действительно не удовлетворен, так как я действительно хочу показать пользователю сообщение. Это сообщение должно быть "Устройство подключено к Интернету"
но, к сожалению, я не могу этого сделать. Я использую следующий код
public static boolean isNetworkAvailable(Context context) {
ConnectivityManager connectivityManager
= (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
но это действительно указывает на меня, если сеть подключена или нет.
Так что нет ли случая, когда я могу показать сообщение типа "Пожалуйста, подождите, устройство подключено к Интернету"
Или как мне получить, чтобы устройство перезагружалось не единственное приложение.... Пожалуйста помоги
1 ответ
Зарегистрируйте локального (или объявленного Manifest, если хотите) приемника вещания в своей деятельности (документация здесь https://developer.android.com/guide/components/broadcasts), прослушивая изменения подключения, используя этот фильтр намерений: IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)
, Затем проверьте, есть ли у устройства подключение к Интернету с кодом, который вы разместили. Не забудьте зарегистрировать ваш широковещательный приемник в методе onResume() и отменить его регистрацию в методе onPause()
- От API 24 и выше:
Вы можете использовать registerDefaultNetworkCallback https://developer.android.com/reference/android/net/ConnectivityManager.html
Обратный вызов имеет открытый метод под названием "onAvailable" https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback.html, который вызывается, когда новая сеть готова к использоваться.