2017-01-19 9 views
0

Как получить состояние сети, либо телефон подключен к Интернету (Wi-Fi или мобильный интернет) или нет? я использую приведенный ниже код, но когда я отсоединяюсь от WIFI, он все равно возвращает true. не знаю, в чем проблема здесь! пожалуйста, предложите, что делать.Как получить состояние сети, либо телефон подключен к Интернету, либо нет?

private boolean isNetworkAvailable() { 
     ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); 
     if(netInfo != null && netInfo.isConnected()) { 
      //we are connected to a network 
      return true; 
     } 
     else 
      return false; 
    } 

Я поставил разрешение в очевидном

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
+0

Посмотрите на него: https://developer.android.com/training/monitoring-device-state/connectivity-monitoring.html – Alan

ответ

0

Вы должны создать вещательный приемник для мониторинга изменений conectivity:

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> 

Docs

Broadcast Receiver example

Brodcast Receiver example 2

+0

где я должен поставить этот это не разрешение .... –

+0

@hiteshchauhan Мое плохое, это не разрешение, как вы сказали, это широковещательный приемник. Ред. – Alan

0

Вы должны использовать getType() из класса ConnectivityManager

private int getConnectionType(Context context){ 
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    return activeNetwork.getType(); 
} 
0

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

private boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo(); 
    if(netInfo != null && netInfo.isConnected()) { 
     //we are connected to a network 
     return true; 
    } 
    else 
     return false; 
}