Как проверить доступ в Интернет на Android?

Я действительно хочу, когда у пользователя нет связи, я хочу показать какой-то диалог, что у него нет связи.

Я попытался поместить это в свою MainActivity, но все равно не работал.

public boolean isOnline() { ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo().isConnectedOrConnecting(); } 

Я также использовал этот, но он также не работал:

 public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void onReceive( Context context, Intent intent ) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService( Context.CONNECTIVITY_SERVICE ); NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo(); NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo( ConnectivityManager.TYPE_MOBILE ); if ( activeNetInfo != null ) { Toast.makeText( context, "Active Network Type : " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show(); } if( mobNetInfo != null ) { Toast.makeText( context, "Mobile Network Type : " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT ).show(); } } } 

Я добавил это в мой манифест:

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

Может кто-то сказать мне, что я делаю неправильно, я бы очень признателен за это. Заранее спасибо!

Возможно, эта ссылка может помочь вам немного дальше: Broadcastreceiver для получения информации ServiceState

Вы могли бы пройти мимо намеченного кода CommunicationManager в своей деятельности или, лучше, если вам нужен доступ из большего количества действий, вы также можете объявить класс статичным в экземпляре Application Singletin и вызвать его там, как описано здесь

Вам также необходимо зарегистрировать BroadcastReceiver в манифесте вашего приложения:

 <receiver android:enabled="true" android:name="com.project.mobile.controller.comm.ConnectivityReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver> 

наслаждаться

  public static boolean haveInternet(Context ctx) { NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); if (info == null || !info.isConnected()) { return false; } return true; } 

Если логический метод возвращает true, тогда есть подключение к Интернету, если false No Connection ..

 if(haveInternet==true){ //Some code }else{ Toast.makeText(ActivityName.this,"No Internet Connection", Toast.LENGTH_SHORT).show(); } 

Также см. Это для дальнейшей помощи .. Подключение к Интернету …

Просто используйте этот метод

 private boolean isNetworkConnected(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo network = cm.getActiveNetworkInfo(); if (network != null) { return network.isAvailable(); } return false; } 

U может проверить ваше соединение с помощью класса ConnectivityManager. Я дал одну функцию, которую можно использовать в коде.

  public static boolean CheckInternet(Context context) { 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); 

Здесь, если доступна проверка состояния Wi-Fi и мобильной сети или нет. Если кто-либо из них доступен или подключен, он вернет true, иначе false;

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

После использования этой функции и нужно 2 просто проверить условие вроде

  if (CheckInternet(getBaseContext())) { //connection successfull } else { Toast.makeText(getBaseContext(),"Please Check InternetConnectionToast.LENGTH_LONG).show(); } 

наслаждаться

Вышеуказанные методы работают, когда вы подключены к источнику Wi-Fi или через пакеты данных сотового телефона. Но в случае подключения Wi-Fi есть случаи, когда вас просят войти в систему, как в кафе. Таким образом, в этом случае ваше приложение будет терпеть неудачу, поскольку вы подключены к источнику Wi-Fi, но не с Интернетом.

Этот метод работает отлично.

 public static boolean isConnected(Context context) { ConnectivityManager cm = (ConnectivityManager)context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); if (activeNetwork != null && activeNetwork.isConnected()) { try { URL url = new URL("http://www.google.com/"); HttpURLConnection urlc = (HttpURLConnection)url.openConnection(); urlc.setRequestProperty("User-Agent", "test"); urlc.setRequestProperty("Connection", "close"); urlc.setConnectTimeout(1000); // mTimeout is in seconds urlc.connect(); if (urlc.getResponseCode() == 200) { return true; } else { return false; } } catch (IOException e) { Log.i("warning", "Error checking internet connection", e); return false; } } return false; } 

Пожалуйста, используйте это в отдельном потоке из основного потока, поскольку он делает сетевой вызов и будет вызывать NetwrokOnMainThreadException, если не следовать.