2013-03-25 7 views
1

Мне нужно проверить подключение к Интернету в приложении для Android.Проверка подключения к Интернету на Android

Я использую этот код:

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo ni = cm.getActiveNetworkInfo(); 
     if (ni!=null && ni.isAvailable() && ni.isConnected()) { 
      return true; 
     } else { 
      return false; 
     } 

И не может пройти следующую ошибку:

The method getSystemService(String) is undefined for the type ConxsMTD

Я попытался с помощью getContext().getSystemService, а также не удалось с следующей ошибкой:

The method getContext() is undefined for the type ConxsMTD

Любая идея, что я делаю неправильно?

+2

в обоих случаях вы использовали методы, которые не доступны в том классе, в котором вы их используете. Это базовое знание java ... – WarrenFaith

ответ

1

Это не исправить ваш данный пример, но мой пример действительно работает и более прост (на мой взгляд).

Что вы хотите сделать, это отправить «ping» (если вы хотите это назвать), чтобы проверить соединение. Если соединение завершено, вы знаете, что вы все еще подключены. Если вы получите IOException или NullPointerException, то вы, вероятно, отключились и больше не подключены.

try { 
    URL url = new URL("http://www.google.com"); 
    HttpURLConnection urlConnect = (HttpURLConnection) url.openConnection(); 
    urlConnect.setConnectTimeout(1000); 
    urlConnect.getContent(); 
    System.out.println("Connection established."); 
} catch (NullPointerException np) { 
    np.printStackTrace(); 
} catch (IOException io) { 
    io.printStackTrace(); 
} 
0

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

public static boolean checkNetworkState(Context context) { 
    ConnectivityManager conMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo infos[] = conMgr.getAllNetworkInfo(); 
    for (NetworkInfo info : infos) { 
     if (info.getState() == State.CONNECTED) 
      return true; 
    } 
    return false; 
} 

Таким образом, вы только должны пройти getApplicationContext() этому методу, как boolean hasConnection = checkNetworkState(getApplicationContext());

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