1 Отключение интернет-кабелей не имеет значения. Используйте F8 для включения / выключения интернета в эмуляторе
2 В первом коде эта логика неверна:
if(info != null || info.isConnected()) {
Log.v("NetworkInfo","Connected State");
}
Должно быть:
if(info != null && info.isConnected()) {
Log.v("NetworkInfo","Connected State");
}
Если вы используете || тогда это результат:
а) когда информация равна нулю, info.isConnected () завершится сбоем
б) когда информация не равна нулю, вы всегда будете отображать состояние соединения
Однако, даже если вы это исправите, код не будет полностью правильным (см. 4 )
3 Во втором коде эта логика неверна:
else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
|| conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {
Log.v("conMgr"," No Connection");
}
должно быть:
else {
Log.v("conMgr"," No Connection");
}
Почему? Потому что существует больше состояний, чем СОЕДИНЕНО и ОТКЛЮЧЕНО.
Однако, даже если вы это исправите, код не будет полностью правильным (см. 4 )
4 Работает на эмуляторе и устройствах.
connected = ( conMgr.getActiveNetworkInfo() != null &&
conMgr.getActiveNetworkInfo().isAvailable() &&
conMgr.getActiveNetworkInfo().isConnected() )
Обратите внимание на использование isAvailable - без этого isConnected может вернуть TRUE, если WIFI отключен.
Надеюсь, это поможет!