Как проверить доступность сети? - PullRequest
1 голос
/ 13 сентября 2011

Я должен подключить свое приложение к серверу, используя Wi-Fi (если он доступен) или gprs (если Wi-Fi не доступен).Вот мой код для проверки доступности соединения

public static final boolean isConnectionAvailable(Activity a)
{  

  ConnectivityManager cm = (ConnectivityManager)a.getSystemService(Context.CONNECTIVITY_SERVICE);

  State mobile = cm.getNetworkInfo(0).getState();

  State wifi = cm.getNetworkInfo(1).getState();

  if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING)
    {
        return true;
    }
  if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING)
    {
        return true;
    }

   return false;
}      

Это правильный путь?Кто-нибудь может предложить мне лучший способ?

Ответы [ 2 ]

9 голосов
/ 18 января 2012

Следующий очень похожий подход работает, но имеет дополнительное преимущество: он не заботится о том, что лежит в основе носителя, так как похоже, что есть поддержка не только WiFi.Может быть, они также покрыты мобильным, но документы не очень ясно:

// added as an instance method to an Activity
boolean isNetworkConnectionAvailable() {  
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo info = cm.getActiveNetworkInfo();     
    if (info == null) return false;
    State network = info.getState();
    return (network == NetworkInfo.State.CONNECTED || network == NetworkInfo.State.CONNECTING);
}     
0 голосов
/ 08 мая 2018

Проверка доступности сети:

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
...