¿Cómo puedo recibir una notificación cuando el dispositivo pierde conectividad de red en android L (API 21)
Estoy utilizando este código para ser notificado cuando la conexión se pierde en API 20 y hacia abajo.
registerReceiver(getConnectivityStateBroadcastReceiver(), new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); private class ConnectivityStateBroadcastReceiver extends BaseBroadcastReceiver { /** * @param userLoggedIn * @param context * @param intent */ @Override protected void onReceive(Boolean userLoggedIn, Context context, Intent intent) { Bundle extras = intent.getExtras(); boolean notConnected = extras.getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false); // DO something } }
Pero no funciona en la API 21.
- Android: ¿Detectar el estado de No molestar?
- Java.lang.IllegalStateException: RecyclerView no tiene LayoutManager en Fragmento
- reciclado dos veces! Excepción de tiempo de ejecución en TypedArray
- Eclipse no construye un proyecto Android dirigido a 5.0 Lollipop
- Transición de escena con elementos de héroe lanza Capa supera el máximo. Dimensiones soportadas por la GPU
¿Cómo puedo arreglar eso? Tal vez tiene que ver con ConnectivityManager.NetworkCallbak pero no encontré ningún ejemplo de cómo usarlo. Gracias.
- Efecto de material en el botón con el color de fondo
- NullPointerException debido a 'void dalvik.system.CloseGuard.close ()' en lollipop
- Cómo cambiar programáticamente el color primario en Android L
- Java: acceso al campo final estático en JNI
- Cómo implementar la pantalla Detalles de contacto como Lollipop
- Cómo utilizar setOutlineProvider en lugar de setOutline en Lollipop
- Abrir directorio específico mediante Storage Access Framework
- Cómo agregar una actividad de configuración de notificaciones a la configuración del sistema
Aceptar, así que averiguar cómo hacerlo, pero apreciaría la confirmación de que esta solución es la correcta.
Todo lo que hice fue agregar una llamada a este código en el onCreate de mi clase de aplicación
/** * */ @SuppressLint("NewApi") private void registerConnectivityNetworkMonitorForAPI21AndUp() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { return; } ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder builder = new NetworkRequest.Builder(); connectivityManager.registerNetworkCallback( builder.build(), new ConnectivityManager.NetworkCallback() { /** * @param network */ @Override public void onAvailable(Network network) { sendBroadcast( getConnectivityIntent(false) ); } /** * @param network */ @Override public void onLost(Network network) { sendBroadcast( getConnectivityIntent(true) ); } } ); } /** * @param noConnection * @return */ private Intent getConnectivityIntent(boolean noConnection) { Intent intent = new Intent(); intent.setAction("mypackage.CONNECTIVITY_CHANGE"); intent.putExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, noConnection); return intent; }
Y en el IntentFilter que ya está monitoreando mi conectividad para API 20 y menos, agregé esto
IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction("mypackage.CONNECTIVITY_CHANGE");
Y ahora mi receptor de difusión que ya está trabajando recibe notificación sobre cambios de red en la API 21 también.
Agregando a la respuesta anterior: Más información sobre cómo manejar el estado de la red en Lollipop se puede encontrar en https://developer.android.com/about/versions/android-5.0.html
- ¿Cómo puedo establecer el modo openFileOutput en MODE_PRIVATE y MODE_APPEND?
- Error de compilación de VLC para Android