Разница между `isConnected()` и `isAvailable()` в андроиде `NetworkInfo`

Я пытаюсь проверить, подключено ли устройство к интернету или нет. У меня есть реализация ниже, чтобы сделать это

public static boolean isConnectedToNetwork(Context context) {
  ConnectivityManager connectivityManager =
    (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
  NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
  return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}

NetworkInfo предоставляет два метода isConnected() а также isAvailable(), Какой из них я должен использовать и в чем разница между ними.

И есть ли способ обнаружить состояние, когда устройство подключено к Wifi без подключения к интернету?

2 ответа

Если устройство подключено к сети, isConnected возвращает true. Если устройство не подключено, но сеть доступна для подключения, isAvailable возвращает true, isConnected возвращает false.

Вы можете прочитать эту тему, чтобы найти свой последний вопрос. Android Проверьте, есть ли WiFi, но нет интернета

isConnected()

Indicates whether network connectivity exists and it is possible to establish connections and pass data.

- Always call this before attempting to perform data transactions.

isAvailable()

Indicates whether network connectivity is possible. A network is unavailable when a persistent or semi-persistent condition prevents the possibility of connecting to that network. Examples include

- The device is out of the coverage area for any network of this type.

- The device is on a network other than the home network (i.e., roaming), and data roaming has been disabled.

- The device's radio is turned off, e.g., because airplane mode is enabled.

Ссылка Ссылка

Другие вопросы по тегам