Atividade do Android não é exibida quando a tela é ativada e a tela de bloqueio não é desativada
eu tenho umBroadcastReceiver
que começa umaActivity
. Se oActivity
é iniciado enquanto a tela está ligada, é exibida e está tudo bem. No entanto, em dispositivos ICS e JB (eu não testei GB ou HC mas o problema não existe com Froyo) se oActivity
é iniciado enquanto a tela está desligada, a tela de bloqueio não está desativada e a atividade não é mostrada quando o telefone é desbloqueado (seja desbloqueá-lo manualmente ou com o código que eu coloquei para postar dispositivos Froyo).
Por que, em pelo menos dispositivos ICS e JB, a tela de bloqueio não é desativada sem o código mencionado abaixo e por que a atividade não é exibida se a tela estava desligada quando oActivity
Começou?
Aqui está o código:
NoBroadcastReceiver
:
Intent alarmAlert = new Intent(context, AlarmGoneOffActivity.class);
alarmAlert.putExtra(MyAlarmManager.ALARM_NUM_ID, alarm.ID);
alarmAlert.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_NO_USER_ACTION);
context.startActivity(alarmAlert);
EmAlarmGoneOffActivity.onCreate()
:
setContentView(R.layout.alarm_gone_off);
final Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
//so far all of my post froyo devices (ICS and JB no more GB)
// don't bypass the lockscreen unless we use this
if(Build.VERSION.SDK_INT > Build.VERSION_CODES.FROYO) {
KeyguardManager myKeyGuard =
(KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock myLock = myKeyGuard.newKeyguardLock("ShabbosAlarm");
myLock.disableKeyguard();
}
Editar: Eu realmente prefiro não usarKeyguardLock.disableKeyguard()
porque faz com que a proteção do teclado fique desativada atéKeyguardLock.reenableKeyguard()
o que é inconveniente. Alguma solução?
Edit2: Agora posso confirmar que o problema só existe no ICS e acima. Alguma coisa mudou que impede a proteção do teclado de ser desativada? E mesmo que houvesse, por que meuActivity
não mostra quando a tela é desbloqueada manualmente?