Как проверить наличие интернет-соединения?
Спойлер –никак!
За последние несколько дней, в одном из публичных собесов и в некоторых ТГ-чатиках, задают достаточно актуальный вопрос – «Как проверить наличие интернет-соединения?»
Так вот, на 100% убедиться в наличии интернет-соединения никак нельзя. Есть несколько распространенных способов, которые принято юзать и через которые можно косвенно проверить наличие инета, но нужно понимать, что это не 100% гарантия.
Способ 1 – ConnectivityManager. Наиболее распространенный, который встречается чаще и в общем-то для типовых задач, вполне подходит. Нужно понимать, что через ConnectivityManager можно проверить активные подключения интерфейсов, но никак не наличие выхода в интернет. Простой пример – wifi точки (метро, макдак, ТЦ и т.д.), подключение есть, но выхода в интернет нет – нужна авторизация.
Способ 2 – Выполнить любой запрос. Этот способ встречается реже и так же не дает 100% гарантии. Суть простая – выполняем простой запрос к какому-нибудь серваку, получили 200 OK – считаем, что интернет есть. Тут проблема в другом – найти сервак, который будет постоянно доступен, а как мы знаем, в последнее время падает всё (google, cloudflare, facebook, amazon, etc). В одном из собесов говорили о серваках 8.8.8.8, 1.1.1.1, но и они порой бывают не доступны.
Такие дела. И несколько полезных ссылок👇
👉 Monitor connectivity status and connection metering
👉 Implementing Internet Connectivity Checker in Android Apps
👉 How To Monitor Internet Connection in Android Using Kotlin and LiveData
👉 How to check internet connection on Android "Q"
@mobile_native
Спойлер –
За последние несколько дней, в одном из публичных собесов и в некоторых ТГ-чатиках, задают достаточно актуальный вопрос – «Как проверить наличие интернет-соединения?»
Так вот, на 100% убедиться в наличии интернет-соединения никак нельзя. Есть несколько распространенных способов, которые принято юзать и через которые можно косвенно проверить наличие инета, но нужно понимать, что это не 100% гарантия.
Способ 1 – ConnectivityManager. Наиболее распространенный, который встречается чаще и в общем-то для типовых задач, вполне подходит. Нужно понимать, что через ConnectivityManager можно проверить активные подключения интерфейсов, но никак не наличие выхода в интернет. Простой пример – wifi точки (метро, макдак, ТЦ и т.д.), подключение есть, но выхода в интернет нет – нужна авторизация.
Способ 2 – Выполнить любой запрос. Этот способ встречается реже и так же не дает 100% гарантии. Суть простая – выполняем простой запрос к какому-нибудь серваку, получили 200 OK – считаем, что интернет есть. Тут проблема в другом – найти сервак, который будет постоянно доступен, а как мы знаем, в последнее время падает всё (google, cloudflare, facebook, amazon, etc). В одном из собесов говорили о серваках 8.8.8.8, 1.1.1.1, но и они порой бывают не доступны.
Такие дела. И несколько полезных ссылок👇
👉 Monitor connectivity status and connection metering
👉 Implementing Internet Connectivity Checker in Android Apps
👉 How To Monitor Internet Connection in Android Using Kotlin and LiveData
👉 How to check internet connection on Android "Q"
@mobile_native