2013-08-15 5 views
0

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

public boolean hasConnection(Context context) { 

       /** 
       *context.getsystemservice parameters: 
       name: The name of the desired service. 
       Returns: The service or null if the name does not exist. 
       */ 
      ConnectivityManager cm = (ConnectivityManager) context.getSystemService(
       Context.CONNECTIVITY_SERVICE); 

      NetworkInfo wifiNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
      if (wifiNetwork != null && wifiNetwork.isConnected()) { 
       return true; 
      } 

      NetworkInfo mobileNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 
      if (mobileNetwork != null && mobileNetwork.isConnected()) { 
       return true; 
      } 

      NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
      if (activeNetwork != null && activeNetwork.isConnected()) { 
       return true; 
      } 

      return false; 
      }//end of hasConnection class 
+0

Вам не хватает '' разрешение? – gunar

+0

нет, я не пропустил разрешение –

ответ

0

использовать этот код

public boolean CheckInternet() 
{ 
    ConnectivityManager connec = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    android.net.NetworkInfo wifi = connec.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 
    android.net.NetworkInfo mobile = connec.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 

    // Here if condition check for wifi and mobile network is available or not. 
    // If anyone of them is available or connected then it will return true, otherwise false; 

    if (wifi.isConnected()) { 
     return true; 
    } else if (mobile.isConnected()) { 
     return true; 
    } 
    return false; 
} 

Разрешение:

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

вы должны увидеть, что эта строка кода делать

NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); 
    if (activeNetwork != null && activeNetwork.isConnected()) { 
     return true; 
    } 

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

0

Если вы заинтересованы только в том случае любой вид сети подключен вообще, вам не нужны дополнительные код:

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 

    NetworkInfo ni = cm.getActiveNetworkInfo(); 

    return (ni != null) && ni.isConnected(); 
+0

Я пробовал, и он тоже не работает –

+0

@jaradat Что происходит? –

+0

он всегда возвращает true, даже если нет подключения к Интернету –

Смежные вопросы