Обнаружение ограниченного сетевого подключения в 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. ОС сообщает нам, что мы подключены к сети. Тем не менее, пользователь не имеет возможности подключения к Интернету.

Есть ли хороший способ определить, что пользователь имеет полностью работающее сетевое соединение?

Я рассматриваю возможность вызова облегченного веб-сервиса, чтобы проверить их подключение и предупредить пользователя, если приложение не получит действительный доход от сервиса. Это перебор? или другим пришлось прибегнуть к подобным приемам?

Ответы на вопрос(2)

Ваш ответ на вопрос