Обнаружение ограниченного сетевого подключения в Android?
Существует ряд вопросов, касающихся обнаружения сетевых подключений в Android.https://stackoverflow.com/a/4239019/90236 дает очень подробный ответ иhttps://stackoverflow.com/a/8548926/90236 показывает методы для определения типа сети, к которой она подключена.
Мы обнаруживаем сетевое подключение, используя код, похожий на эти ответы, например:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Это позволяет нам предупредить пользователя, если он не в сети. Однако это не помогает нам определить, имеет ли пользователь ограниченные возможности подключения. Есть условия ограниченного подключения, которые заставляют пользователей жаловаться. Они включают:
Пользователи подключены к домашней сети Wi-Fi, но кабельный модем или интернет-служба недоступна.
Пользователи находятся в отеле или кафе и успешно подключаются к сети Wi-Fi, но сеть требует, чтобы они вошли в систему или согласились с условиями обслуживания, прежде чем им будет предоставлен полный доступ к сети.
В обеих этих ситуациях наш тест isNetworkAvailable () возвращает true. ОС сообщает нам, что мы подключены к сети. Тем не менее, пользователь не имеет возможности подключения к Интернету.
Есть ли хороший способ определить, что пользователь имеет полностью работающее сетевое соединение?
Я рассматриваю возможность вызова облегченного веб-сервиса, чтобы проверить их подключение и предупредить пользователя, если приложение не получит действительный доход от сервиса. Это перебор? или другим пришлось прибегнуть к подобным приемам?