Estoy tratando de invocar un BroadcastReceiver cuando la pantalla está encendida. En mi AndroidManifest.xml he especificado:android.intent.action.SCREEN_ON no funciona como filtro de intención de receptor
<receiver android:name="IntentReceiver">
<intent-filter>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
Sin embargo, parece que el receptor no se invoca (puntos de interrupción no se activan, las declaraciones de registro ignorados). Cambié SCREEN_ON por BOOT_COMPLETED para una prueba, y este se llama a.
Esto se encuentra en un proyecto de 1.6 (SDK nivel 4).
Una búsqueda de código de Google reveló esto, descargué el proyecto y lo sincronicé, lo convertí en el trabajo con las últimas herramientas, pero tampoco es capaz de interceptar ese evento.
¿Es esta quizá ya no es compatible?
Anteriormente he sido capaz de interceptar este evento con éxito con una llamada a Context.registerReceiver() de esta manera
registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// ...
}
}, new IntentFilter(Intent.ACTION_SCREEN_ON));
Sin embargo, esto se llevó a cabo por un servicio de larga vida. Siguiendo el sabio consejo de CommonsWare, he elegido tratar de eliminar el servicio de larga vida y usar diferentes técnicas. Pero aún necesito detectar la pantalla y los eventos.
Gracias CW.Hubiera sido maravilloso que hubiera algún tipo de advertencia en tiempo de ejecución o en la documentación sobre ACTION_SCREEN_ON que fuera imposible de capturar. Archivo este en 'gotcha'. –
Sí, creo que documentaron que 'ACTION_BATTERY_CHANGED', el ejemplo por excelencia de este fenómeno, se comporta de esta manera, pero definitivamente se saltaron este. Si busca 'ACTION_SCREEN_ON' en el código fuente (por ejemplo, a través de la Búsqueda de códigos de Google) y encuentra su uso en' PowerManagerService', notará que se ha establecido el indicador que indica que solo está registrado-registrado. – CommonsWare
+1 solo para la discusión del color. – 323go