Android Lollipop - Tela de bloqueio de desvio para atividade pop-up
eu tenhoActivity1
que é uma tela de lista de itens. Cada item pode ser visualizado em um separadoActivity2
que é exibido como um pop-up.Activity1
pode ser iniciado a partir do plano de fundo e exibido mesmo quando a tela está bloqueada.Activity1
Você também pode optar por exibir automaticamente o conteúdo de um item na tela da lista, iniciandoActivity2
. Podemos ignorar a tela de bloqueio porque ambas as atividades têm oWindowManagerFlags.DismissKeyguard
ativado noOnCreate
método.
Antes do Android Lollipop, tudo funcionava conforme o esperado. Mas agora o pop-upActivity2
não fica visível, a menos que o dispositivo seja desbloqueado manualmente. Se eu mudarActivity2
para ser uma tela cheiaActivity
tudo parece funcionar (exceto a transição de uma atividade para outra exibirá brevemente a tela de bloqueio). Alguma idéia de como corrigir isso de forma limpa?
Além disso, tentei apenas os dispositivos Galaxy S6 / S6 Edge que possuem esse novo recurso de segurança Knox.
Editar eu mudeiActivity2
ser umDialogFragment
em vez de umActivity
. Isso funcionou melhor para mim porque a resposta sugerida usava código obsoleto ou obsoleto, dependendo do sdk de destino.Activity1
está usando os seguintes sinalizadores para ignorar a tela de bloqueio quando necessário.
getWindow().addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
getWindow().addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
Desde aActivity2
agora é apenas umDialogFragment
, ele usa os sinalizadores de janela do paiActivity1
. Também removo essas bandeiras no"android.intent.action.SCREEN_OFF" ação para que a atividade ignore a tela de bloqueio apenas quando iniciada como uma notificação e nem sempre que a atividade estiver no topo da pilha. As permissões mencionadas na resposta são necessárias.