Ответ 1
1 Отключение интернет-кабелей не имеет значения. Используйте F8 для включения/выключения интернета в эмуляторе
2 В первом коде эта логика неверна:
if(info != null || info.isConnected()) {
Log.v("NetworkInfo","Connected State");
}
Это должно быть:
if(info != null && info.isConnected()) {
Log.v("NetworkInfo","Connected State");
}
Если вы используете || то это результат: a) когда информация равна null, сбой info.isConnected() b) когда информация не является нулевой, вы всегда будете показывать состояние подключенного
Однако, даже если вы исправите это, код не будет полностью правильным (см. 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");
}
Почему? Потому что есть больше состояний, чем CONNECTED и DISCONNECTED.
Однако, даже если вы исправите это, код не будет полностью правильным (см. 4)
4 Это работает на эмуляторе и устройствах.
connected = ( conMgr.getActiveNetworkInfo() != null &&
conMgr.getActiveNetworkInfo().isAvailable() &&
conMgr.getActiveNetworkInfo().isConnected() )
Обратите внимание, что использование isAvailable - без этого isConnected может вернуть TRUE, когда WIFI отключен.
Надеюсь, это поможет!