¿No puedo recibir la emisión en el cambio de estado de la batería?
Estoy teniendo el mismo problema que este post: Receptor de radiodifusión de la batería no funciona . Pero parece que nadie ha respondido a esa pregunta.
Aquí está mi BroadcastReceiver:
- Android no puede pasar extras de intención aunque AlarmManager
- Problema de Android: depurar cuando el teléfono está apagado
- ¿Es posible llamar al método onReceive desde un diálogo?
- Recibir una notificación (vía BroadcastReceiver) cuando se inicia / detiene el GPS (o servicios de ubicación)
- ¿No es necesario android.permission.RECEIVE_BOOT_COMPLETED?
public class BatteryLevelReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Log.v("plugg", "plug change fired"); Toast.makeText(context, " plug change fired", Toast.LENGTH_LONG).show(); }
Y aquí está mi AndroidManifest.xml:
<receiver android:name=".ReceversAndServices.BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_LOW" /> </intent-filter> </receiver> <receiver android:name=".ReceversAndServices.BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_CHANGED" /> </intent-filter> </receiver>
También he añadido esta línea al manifiesto:
<uses-permission android:name="android.permission.BATTERY_STATS"/>
Pero aún no hay éxito!
Realmente apreciaría si alguien pudiera aconsejarme qué estoy haciendo mal.
- Android: Detectar cuando la tarjeta SD montada como unidad de disco a un equipo
- Eliminar Apk después de la instalación de la aplicación
- Difusión cuando se captura la captura de pantalla en Android 4.0?
- Recibir la misma intención difundió varias veces pero sólo envió una vez
- Cómo conceder permisos sólo al creador de un URI
- AlertDialog de dentro de BroadcastReceiver ?? Se puede hacer?
- IOS - Swift - Devolución de llamada cuando el teléfono se conecta
- BroadcastReceiver Vs WakefulBroadcastReceiver
De la documentación de ACTION_BATTERY_CHANGED :
No se puede recibir esto a través de componentes declarados en manifiesto, solo mediante el registro explícito para ello con Context.registerReceiver (). Consulte ACTION_BATTERY_LOW, ACTION_BATTERY_OKAY, ACTION_POWER_CONNECTED y ACTION_POWER_DISCONNECTED para distintas transmisiones relacionadas con la batería que se envían y pueden recibirse a través de receptores de manifiesto.
Ahí lo tienes: debes registrarlo explícitamente desde tu código Java.
Acabo de seguir la guía de desarrolladores de Android en Supervisión del nivel de batería y estado de carga y tuvo éxito inmediato. Si BatteryLevelReceiver es su propia clase, entonces yo recomendaría:
<receiver android:name=".BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_LOW" /> <action android:name="android.intent.action.BATTERY_CHANGED" /> </intent-filter> </receiver>
Adición
Estoy dispuesto a adivinar que escribió BatteryLevelReceiver como una clase anidada en ReceversAndServices. De acuerdo con Receiver como clase interna en Android , no se puede hacer eso con clases no estáticas. Podrías convertir BatteryLevelReceiver en una clase estática y registrar el receptor en onResume (), pero entonces tu aplicación necesitará correr para capturar los eventos … Mueve tu receptor a una clase separada y registra estos Intents:
<receiver android:name=".BatteryLevelReceiver"> <intent-filter android:priority="900"> <action android:name="android.intent.action.BATTERY_LOW" /> <action android:name="android.intent.action.BATTERY_OKAY" /> <action android:name="android.intent.action.ACTION_POWER_CONNECTED" /> <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" /> </intent-filter> </receiver>
(No BATTERY_CHANGED como señaló Darshan Computing.)
Asegúrese de tener la clase de receptor de batería no como una subclase de otra sino como una clase separada en su proyecto.
También intente utilizar el método Context.registerReceiver () explícitamente en su código y no olvide anular su registro: http://developer.android.com/reference/android/content/Context.html#registerReceiver%28android.content.BroadcastReceiver,% 20android.content.IntentFilter% 29
- ¿Cómo puedo llamar a getContentResolver en android?
- Android sleep () sin bloquear la interfaz de usuario