Как проверить наличие интернет-соединения?



Спойлер – никак!



За последние несколько дней, в одном из публичных собесов и в некоторых ТГ-чатиках, задают достаточно актуальный вопрос – «Как проверить наличие интернет-соединения?»



Так вот, на 100% убедиться в наличии интернет-соединения никак нельзя. Есть несколько распространенных способов, которые принято юзать и через которые можно косвенно проверить наличие инета, но нужно понимать, что это не 100% гарантия.



Способ 1ConnectivityManager. Наиболее распространенный, который встречается чаще и в общем-то для типовых задач, вполне подходит. Нужно понимать, что через 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