2013-05-15 4 views
4

Желаю, чтобы я смог выполнить проверку, чтобы проверить подключение к Интернету, я не хочу проверять состояние сети, потому что он только обнаруживает, что я активировал интернет на своем устройстве, y yo quiero revisar si es posible conectarse internet , Что-то вроде пинга.Проверка подключения к Интернету Android

+0

См кратчайший путь для обнаружения подключения к Интернету, здесь http://stackoverflow.com/questions/9570237/android-check-internet-connection/24692766#24692766 – Nepster

+0

@Nepster, который не выполняет цели из вопрос – therealprashant

ответ

11

Попробуйте следующее:

public boolean checkOnlineState() { 
    ConnectivityManager CManager = 
     (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo NInfo = CManager.getActiveNetworkInfo(); 
    if (NInfo != null && NInfo.isConnectedOrConnecting()) { 
     return true; 
    } 
    return false; 
} 

не забудьте доступ

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

еще

if (InetAddress.getByName("www.xy.com").isReachable(timeout)) 
{ } 
else 
{ } 
+0

Thats отлично работает, но это только проверьте, активировал ли я свой Wi-Fi, 3g, но я хочу проверить, существует ли интернет-соединение, например. иногда мы подключаем Wi-Fi, и интернет отключается, и эта проверка, если я включил свой Wi-Fi. – Loreln

+0

ОК, чем вы должны использовать: if (InetAddress.getByName («google.com»). IsReachable (2000)) – Oli

1

Это делает работы для меня:

Для проверки доступности сети:

private Boolean isNetworkAvailable() { 
    ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting(); 
} 

Чтобы проверить доступ в Интернет:

public Boolean isOnline() { 
    try { 
     Process p1 = java.lang.Runtime.getRuntime().exec("ping -c 1 www.google.com"); 
     int returnVal = p1.waitFor(); 
     boolean reachable = (returnVal==0); 
     return reachable; 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    return false; 
} 
+0

Ваш метод проверки inernet acces работал на меня ... За исключением Android 4.3 jellybean, я не знаю, почему. – Josh

0

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

boolean flag=false; 
    ConnectivityManager connectivity = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE); 
    if (connectivity != null) 
    { 
     NetworkInfo[] info = connectivity.getAllNetworkInfo(); 
     if (info != null) 
      for (int i = 0; i < info.length; i++) 
       if (info[i].getState() == NetworkInfo.State.CONNECTED) 
       { 
        flag=true; 

       } 

    } 
    if(flag==true) 
    { 
     Log.e("TAG","Internet Is Connected"); 
    } 
    else 
    { 
      Log.e("TAG","Internet Is Not Connected"); 
    } 
+0

'getAllNetworkInfo()' требует разрешения ACCESS_NETWORK_STATE. –

+0

Этот метод не будет определять, есть ли точка доступа Wi-Fi, к которой вы подключаетесь, также имеет Интернет. – Josh

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