¿Android N no está enviando android.net.conn.CONNECTIVITY_CHANGE?
He definido un receptor en una aplicación de sandbox Android N:
<receiver android:exported="true" android:name="com.sandboxapplication.NetworkReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> </intent-filter> </receiver>
Es bastante simple:
- Android 7.0 scan sin resultados
- OnCreateOptionsMenu no recibe llamadas en Android 7.0
- No se ejecuta el Programador de trabajos en Android N
- Cómo ocultar la fecha en el selector de fecha
- No se puede encontrar ColorStateList de ID de recurso extraíble sólo en Android Nougat
public class NetworkReceiver extends BroadcastReceiver { private static final String TAG = NetworkReceiver.class.getName(); @Override public void onReceive(Context context, Intent intent) { Log.i(TAG, "Received Network Change event."); } }
Este receptor está funcionando bien si en mi archivo build.gradle mi targetSdkVersion es 23. Sin embargo, si establezco mi targetSdkVersion a 24, el receptor nunca recibe nada. De hecho, si coloco un punto de ruptura de depuración en mi receptor Android Studio me da la indicación visual de que parece que la clase nunca se carga en la memoria.
¿He extrañado algo muy básico en la documentación de Android N? ¿Existe una nueva forma de detectar eventos de cambio de conectividad?
- Android ClipPath de Nougat no funciona durante la animación
- Deshabilitar la función de ventanas múltiples para Android N no funciona para una actividad
- Doze, diferente entre Marshmallow y Nougat
- Cómo diseñar una página que soporte Android N (turrón) API 24 (diseño de ventanas múltiples)?
- Faltan los extras de Android 7
- 'La aplicación está escaneando con demasiada frecuencia' con ScanSettings.SCAN_MODE_OPPORTUNISTIC
- Android toolchain jack no reconoce java.util.function.Predicate en secuencia
- Detectar la aplicación actual en Android Nougat 7. + versión
Las aplicaciones orientadas a Android N (Nougat)
no reciben emisiones CONNECTIVITY_ACTION
, aunque tengan entradas de manifiesto para solicitar la notificación de estos eventos. Las aplicaciones que se están ejecutando pueden seguir escuchando CONNECTIVITY_CHANGE
en su subproceso principal si solicitan notificación con BroadcastReceiver
.
Para ver qué cambió en Android N (Nougat)
. Por favor, consulte el enlace a continuación. Cambios en el comportamiento de Android N
Utilice este código para registrar el receptor en su actividad o en la clase de aplicación
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(new NetworkConnectionReceiver(), intentFilter);
Donde NetworkConnectionReceiver es una clase extendida por BroadcastReceiver. Simplemente agregue esta clase en su aplicación y realice una acción en el método onReceive (Context context, Intent intent).
Nota: Si registra este receptor en Actividad, no olvide anular su registro.