Compruebe la conexión a Internet en ANDROID
Hola Tengo una aplicación basada en datos recuperados por Internet …
¿Cómo puedo manejar mi aplicación en caso de que no haya conexión disponible?
- Código de estado BluetoothGatt de Android 128 Conexión BLE
- Conectarse a la red wifi en android, devolver si la contraseña es incorrecta
- Android: ¿Cómo funciona la aplicación AirDroid?
- Crear configuración de punto de acceso Wifi en android
- Conexión de dos dispositivos mediante libgdx
Puedo detectar la conexión con
ConnectivityManager cm = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE); return cm.getActiveNetworkInfo().isConnectedOrConnecting();
Funciona muy bien … ¿Pero cómo puedo prevenir Force Erros cuando sé que no hay conexión? Me gustaría que se mostrara un mensaje como: "¡Lo sentimos, no hay conexión a Internet disponible!" Y no mi aplicación para aplastar …
- Cómo comprobar si Android "Datos móviles" está activado
- Android bluetooth socket.connect () falla
- Cómo hacer que dos dispositivos Android se comuniquen a través de TCP
- Error en la conexión de Google Analytics con Google para el servicio
- Android: ¿Cómo obtener la encriptación Wifi actual?
- ¿Es posible compartir mi conexión a internet de pc a android via usb?
- Wifi conexión múltiple directa ad-hoc
- ¿Cómo comprobar el estado de la conexión del dispositivo HDMI en Android?
/** * Checks if the device has Internet connection. * * @return <code>true</code> if the phone is connected to the Internet. */ public static boolean hasConnection() { ConnectivityManager cm = (ConnectivityManager) MbridgeApp.getContext().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; }
GetActiveNetworkInfo () puede devolver null, por lo que obtendrá una fuerza de cierre, pero usted puede hacer eso:
ConnectivityManager cm = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE); NetworkInfo ni = cm.getActiveNetworkInfo(); if (null == ni) return false; return ni.isConnectedOrConnecting();
Entonces el cheque es simple:
if (networkAvailable()) // << your method from above { // Do stuff } else { Toast.makeToast(yourcontext, "No network available", Toast.LENGTH_LONG).show(); }
No puedo hacer comentarios, pero tenga en cuenta que NetworkInfo.isConnectedOrConnecting();
En todas las respuestas anteriores solo le dirá si está conectado al enrutador o no, pero si está conectado al enrutador que no tiene acceso a Internet, su aplicación se bloqueará, ya que a través de UnknownHostException.
Debe agregar el siguiente retén adjunto a su captura de prueba
catch (UnknownHostException e) { getRequest.abort(); Log.w("unknownhostexception whicle connects to the host " + url, e); }
O hacer tiempo de espera para su solicitud lo que quieras.
Para ello, debe tener el siguiente permiso en su manifiesto.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
private boolean connectionAvailable() { boolean connected = false; ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.CONNECTED || connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.CONNECTED) { //we are connected to a network connected = true; } return connected; }
ConnectivityManager conMgr = ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = conMgr.getActiveNetworkInfo(); if(info != null && info.isConnected()) { // internet is there. } else { // internet is not there. }