Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Comprobación de la conexión a Internet en android

Tengo el siguiente código para comprobar la conexión a internet wifi / EDGE / GPRS / 3G en mi aplicación.

El código es

  • ¿Cómo puedo crear una marca de tiempo Unix en Android?
  • Cambiar programaticamente el tipo de entrada del EditText de PASSWORD a NORMAL y viceversa
  • ¿Conexión USB host-a-serie Android?
  • Android es la lista negra de nuestra ubicación
  • Compartir enlace y texto con Android Facebook SDK 3.0
  • El host de destino no debe ser nulo o configurado en parámetros
  • public static boolean checkConn(Context ctx) { ConnectivityManager conMgr = (ConnectivityManager) ctx .getSystemService(Context.CONNECTIVITY_SERVICE); if (conMgr.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTING) { return true; } else if (conMgr.getNetworkInfo(0).getState()==NetworkInfo.State.DISCONNECTED || conMgr.getNetworkInfo(1).getState() == NetworkInfo.State.DISCONNECTED){ return false; } return false; } 

    Y lo llamo como a continuación:

     if (CheckInternet.checkConn(introPage.this) == true) { Intent toMainPage = new Intent(introPage.this, mainPage.class); System.gc(); startActivity(toMainPage); } else if (CheckInternet.checkConn(getApplicationContext()) == false) { Toast.makeText(getApplicationContext(), "Sorry, No internet connectivity found", Toast.LENGTH_SHORT) .show(); } 

    Pero estoy teniendo un problema, que es que si estoy conectado a wifi, y abro la aplicación, funciona bien, pero si cierro la aplicación y desactivar el wifi y volver a abrir la aplicación, no a través del error de "No hay conexión", necesito apagar mi dispositivo y luego encenderlo, y el mismo caso es si wifi está apagado, y abro la aplicación, lanza error de "no conexión", y si lo enciendo, todavía lo Arroja el mismo error de "ninguna conexión", hasta que no apague y en el dispositivo.

  • Android: ¿Cómo crear un cuadro de diálogo sin título?
  • Alto uso de la CPU con el emulador de Android (qemu-system-i386.exe)
  • OnSaveInstanceState no se llama después de rotación de pantalla
  • XML de Android que corta la mitad inferior del diseño
  • Android 6.0 Marshmallow: error extraño con la animación de fragmentos
  • Crear gradiente vertical en android
  • 9 Solutions collect form web for “Comprobación de la conexión a Internet en android”

    A veces, la conexión activa no es la primera en la lista, o está inactiva o en un estado de error. Así es como lo haría:

      NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i == null) return false; if (!i.isConnected()) return false; if (!i.isAvailable()) return false; return true; 

    [EDIT 1] No olvide agregar este permiso en el manifiesto de la aplicación:

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

    ¿Te ayuda esto?

    Emmanuel

    La respuesta corta:

     public boolean isNetworkAvailable() { ConnectivityManager connectivityManager = (ConnectivityManager)getActivity().getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); return activeNetworkInfo != null; } 

    Es mejor:

     if (conMgr != null) { NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i != null) { if (!i.isConnected()) ret = false; if (!i.isAvailable()) ret = false; } if (i == null) ret = false; } else ret = false; 

    Con la otra forma, si "Red i" es igual nulo entonces, compruebe después de !i.isConnected() debe fallar (i es nulo).

     public static boolean checkNetworkStatus(Context context) { ConnectivityManager connectivity = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); TelephonyManager telephony = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); NetworkStatus netStatus = new NetworkStatus(connectivity, telephony); if (netStatus.isNetworkAvailable() == true) { Log.e(" in checkNetworkStatus()", "network available"); return true; } else { Log.e(" in checkNetworkStatus()", "no network"); return false; } } 

    Wifi-


     void chkStatus() { final ConnectivityManager connMgr = (ConnectivityManager) this .getSystemService(Context.CONNECTIVITY_SERVICE); final android.net.NetworkInfo wifi = connMgr .getNetworkInfo(ConnectivityManager.TYPE_WIFI); final android.net.NetworkInfo mobile = connMgr .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if (wifi.isAvailable()) { Toast.makeText(this, "Wifi", Toast.LENGTH_LONG).show(); } else if (mobile.isAvailable()) { Toast.makeText(this, "Mobile 3G ", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "No Network ", Toast.LENGTH_LONG).show(); } } 

    Prueba esto:

     public boolean isInternetAvailable(Context context) { ConnectivityManager conMgr = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo i = conMgr.getActiveNetworkInfo(); if (i == null) return false; if (!i.isConnected()) return false; if (!i.isAvailable()) return false; return true; } 

    Y este permiso:

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

    Hola, pruebe el siguiente código:

      public class NetworkCheckDemo extends Activity { TextView tvstatus; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tvstatus=(TextView)findViewById(R.id.txtviewstatus); ConnectivityManager cn=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo nf=cn.getActiveNetworkInfo(); if(nf != null && nf.isConnected()==true ) { Toast.makeText(this, "Network Available", Toast.LENGTH_LONG).show(); tvstatus.setText("Network Available"); } else { Toast.makeText(this, "Network Not Available", Toast.LENGTH_LONG).show(); tvstatus.setText("Network Not Available"); } } } 

    Añada debajo de 3 permisos en el archivo de manifiesto de Android.

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

    He utilizado para comprobar si tengo conectividad, no se olvide de comprobar si el NetworkInfo es nulo o no porque en la tableta donde la conectividad de datos móviles no se proporciona, el NetworkInfo para TYPE_MOBILE devolver null.

     public static boolean collectionAllowed(Context context) { ConnectivityManager connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobileInfo = connectivityManager.getNetworkInfo( ConnectivityManager.TYPE_MOBILE); State mobile = NetworkInfo.State.DISCONNECTED; if ( mobileInfo != null) { mobile = mobileInfo.getState(); } NetworkInfo wifiInfo = connectivityManager.getNetworkInfo( ConnectivityManager.TYPE_WIFI); State wifi = NetworkInfo.State.DISCONNECTED; if ( wifiInfo != null) { wifi = wifiInfo.getState(); } boolean dataOnWifiOnly = (Boolean) PreferenceManager .getDefaultSharedPreferences(context).getBoolean( "data_wifi_only", true); if ((!dataOnWifiOnly && (mobile.equals(NetworkInfo.State.CONNECTED) || wifi .equals(NetworkInfo.State.CONNECTED))) || (dataOnWifiOnly && wifi.equals(NetworkInfo.State.CONNECTED))) { return true; } else { return false; } } 

    Mismo que la respuesta aprobada pero en resumen:

     public static boolean isNetworkAvailable(Context context) { ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = cm.getActiveNetworkInfo(); return info != null && info.isConnected() && info.isAvailable(); } 

    Usted puede utilizar este genial impresionante por emil2k :

     import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.telephony.TelephonyManager; public class Connectivity { public static NetworkInfo getNetworkInfo(Context context){ ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo(); } public static boolean isConnected(Context context){ NetworkInfo info = Connectivity.getNetworkInfo(context); return (info != null && info.isConnected()); } public static boolean isConnectedWifi(Context context){ NetworkInfo info = Connectivity.getNetworkInfo(context); return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI); } public static boolean isConnectedMobile(Context context){ NetworkInfo info = Connectivity.getNetworkInfo(context); return (info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE); } public static boolean isConnectedFast(Context context){ NetworkInfo info = Connectivity.getNetworkInfo(context); return (info != null && info.isConnected() && Connectivity.isConnectionFast(info.getType(),info.getSubtype())); } public static boolean isConnectionFast(int type, int subType){ if(type==ConnectivityManager.TYPE_WIFI){ return true; }else if(type==ConnectivityManager.TYPE_MOBILE){ switch(subType){ case TelephonyManager.NETWORK_TYPE_1xRTT: return false; // ~ 50-100 kbps case TelephonyManager.NETWORK_TYPE_CDMA: return false; // ~ 14-64 kbps case TelephonyManager.NETWORK_TYPE_EDGE: return false; // ~ 50-100 kbps case TelephonyManager.NETWORK_TYPE_EVDO_0: return true; // ~ 400-1000 kbps case TelephonyManager.NETWORK_TYPE_EVDO_A: return true; // ~ 600-1400 kbps case TelephonyManager.NETWORK_TYPE_GPRS: return false; // ~ 100 kbps case TelephonyManager.NETWORK_TYPE_HSDPA: return true; // ~ 2-14 Mbps case TelephonyManager.NETWORK_TYPE_HSPA: return true; // ~ 700-1700 kbps case TelephonyManager.NETWORK_TYPE_HSUPA: return true; // ~ 1-23 Mbps case TelephonyManager.NETWORK_TYPE_UMTS: return true; // ~ 400-7000 kbps /* * Above API level 7, make sure to set android:targetSdkVersion * to appropriate level to use these */ case TelephonyManager.NETWORK_TYPE_EHRPD: // API level 11 return true; // ~ 1-2 Mbps case TelephonyManager.NETWORK_TYPE_EVDO_B: // API level 9 return true; // ~ 5 Mbps case TelephonyManager.NETWORK_TYPE_HSPAP: // API level 13 return true; // ~ 10-20 Mbps case TelephonyManager.NETWORK_TYPE_IDEN: // API level 8 return false; // ~25 kbps case TelephonyManager.NETWORK_TYPE_LTE: // API level 11 return true; // ~ 10+ Mbps // Unknown case TelephonyManager.NETWORK_TYPE_UNKNOWN: default: return false; } }else{ return false; } } } 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.