Android Lollipop: omita la pantalla de bloqueo para la actividad emergente

yo tengoActivity1 que es una pantalla de lista de elementos. Cada elemento se puede ver de forma separadaActivity2 que se muestra como una ventana emergente.Activity1 puede iniciarse desde el fondo y mostrarse incluso cuando la pantalla está bloqueada.Activity1 También puede optar por mostrar automáticamente el contenido de un elemento en la pantalla de lista al iniciarActivity2. Podemos pasar por alto la pantalla de bloqueo porque ambas actividades tienenWindowManagerFlags.DismissKeyguard habilitado en elOnCreate método.

Antes de Android Lollipop todo funcionaba como se esperaba. Pero ahora la ventana emergenteActivity2 no es visible a menos que el dispositivo se desbloquee manualmente. Si cambioActivity2 ser una pantalla completaActivity entonces todo parece funcionar (excepto la transición de una actividad a otra mostrará brevemente la pantalla de bloqueo). ¿Alguna idea sobre cómo solucionar esto limpiamente?

Además, solo he probado los dispositivos Galaxy S6 / S6 Edge que tienen esta nueva característica de seguridad Knox.

Editar he cambiadoActivity2 ser unaDialogFragment en lugar de unActivity. Esto funcionó mejor para mí porque la respuesta sugerida utilizaba un código obsoleto u obsoleto dependiendo del SDK de destino.Activity1 está utilizando los siguientes indicadores para omitir la pantalla de bloqueo cuando sea necesario.

getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);

Ya queActivity2 ahora es solo unDialogFragment, utiliza los indicadores de ventana del padreActivity1. También elimino esas banderas en el"android.intent.action.SCREEN_OFF" acción para que la actividad omita la pantalla de bloqueo solo cuando se inicia como una notificación y no siempre que la actividad esté en la parte superior de la pila. Se requieren los permisos mencionados en la respuesta.

Respuestas a la pregunta(1)

Su respuesta a la pregunta