Bezdepbonusu7Программирование: статьи и ответы

Вопрос

RequestRouteToHost всегда возвращает false

Автор вопроса: AliОтветов: 2

пожалуйста, проверьте следующий код

 public boolean isOnline() {

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
 int networkType = ConnectivityManager.TYPE_WIFI;
return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag"));
 //return cm.getActiveNetworkInfo().isConnectedOrConnecting();

}

  public static int lookupHost(String hostname) {
InetAddress inetAddress;
try {
    inetAddress = InetAddress.getByName(hostname);
} catch (UnknownHostException e) {
    return -1;
}
byte[] addrBytes;
int addr;
addrBytes = inetAddress.getAddress();
addr = ((addrBytes[3] & 0xff) << 24)
        | ((addrBytes[2] & 0xff) << 16)
        | ((addrBytes[1] & 0xff) << 8)
        |  (addrBytes[0] & 0xff);
System.out.println(addr);
return addr;

}

isOnline всегда возвращает false, пожалуйста, помогите, как это работает? Или, пожалуйста, расскажите мне о любом другом способе проверки подключения к серверу. Основная цель - проверить, доступен ли Интернет по локальному Wi-Fi или нет.

androidandroid-wifi

Ответы

Ответ 1 · gimix

Вам нужно указать имя хоста InetAddress.getByName, а не URL-адрес, поэтому эта строка:

return cm.requestRouteToHost(networkType, lookupHost("http://www.ati.ag"));

Должно быть:

return cm.requestRouteToHost(networkType, lookupHost("www.ati.ag"));

Вероятно, это будет работать лучше.

Ответ 2 · gimix

В качестве альтернативы вашему подходу, если ваша цель состоит только в том, чтобы проверить, доступен ли Wi-Fi, вы можете попробовать это. Это сработало для меня:

ConnectivityManager cm=(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm==null)
    return false;
NetworkInfo networkInfo=cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
if(networkInfo==null)
    return false;
return networkInfo.isConnected();

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы