Подключение к Интернету в эмуляторе Android всегда отображает состояние соединения

? ganesh @ | Original: StackOverFlow

привет Я пытался разными способами, чтобы проверить подключение к Интернету в моем эмуляторе Android

  ConnectivityManager conMgr = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);  

   NetworkInfo info= conMgr.getActiveNetworkInfo();  

         if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         }  
        else{  
            Log.v("NetworkInfo","Not Connected state");  
            Log.v("Reason",info.getReason());  
        } 

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

 if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED  ) {

      Log.v("Congr","Connection Present");

    }
    else if ( conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED
        ||  conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.DISCONNECTED) {

      Log.v("conMgr"," No Connection");

    } 

новыше код также показывает "Подключение настоящее ", даже когда я отключаю интернет кабелей. Пожалуйста помощь, чтобы найти правильный путь, чтобы сделать эту .I имеют ACCESS_NETWORK_STATE и разрешение в Интернет в моем файле манифеста

Top 5 ответ

1breakingart.com @

1 Отключение интернет- кабели не имеет значения. Используйте клавишу F8, чтобы отключить / включить интернет в эмуляторе

2 В первом кода эта логика не так:

if(info != null || info.isConnected()) {  
              Log.v("NetworkInfo","Connected State");  
         } 

It should be:

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");

    } 

should be:

 else {

      Log.v("conMgr"," No Connection");

    } 

И Почему Же? Потому что есть больше состояний, чем подключать и отключать .

Тем не менее, даже если вы исправить это ,код не будете совершенно правы (см 4 )

4 Это работает на эмуляторе и устройств.

connected = (   conMgr.getActiveNetworkInfo() != null &&
            conMgr.getActiveNetworkInfo().isAvailable() &&
            conMgr.getActiveNetworkInfo().isConnected()   )

Обратите внимание на использование isAvailable - без этого IsConnected может вернуться TRUE, когда WIFI отключена .

Надеюсь это поможет!

2user1023110 @

На самом деле, это не сказать вам, еслиэмулятор подключен к сети через хостинг ПК. Если вы запустите его на компьютере, а также беспроводной ПК будет выключен он по-прежнему возвращает истину, еслиэмулятор думает что в оперативном режиме . Единственный способ я был в состоянии определить, будут лиэмулятор действительно онлайн, чтобы попытаться извлечь страницу и посмотреть, если это удастся или нет.