La actividad de Android no se muestra cuando la pantalla está activada y la pantalla de bloqueo no se deshabilita
tengo unBroadcastReceiver
que comienza unActivity
. Si elActivity
se inicia mientras la pantalla está encendida, se muestra y todo está bien. Sin embargo, en los dispositivos ICS y JB (no he probado GB o HC pero el problema no existe con Froyo) si elActivity
se inicia mientras la pantalla está apagada, la pantalla de bloqueo no está deshabilitada y la actividad no se muestra cuando el teléfono está desbloqueado (ya sea desbloqueando manualmente o con el código que puse para los dispositivos posteriores a Froyo).
¿Por qué, al menos en los dispositivos ICS y JB, la pantalla de bloqueo no se deshabilita sin el código mencionado a continuación, y por qué la actividad no se muestra si la pantalla estaba apagada cuandoActivity
¿empezó?
Aquí está el código:
En elBroadcastReceiver
:
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);
EnAlarmGoneOffActivity.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: Realmente preferiría no usarKeyguardLock.disableKeyguard()
porque hace que el teclado se desactive hastaKeyguardLock.reenableKeyguard()
lo cual es inconveniente. ¿Alguna solución?
Edit2: Ahora puedo confirmar que el problema solo existe en ICS y superiores. ¿Se ha cambiado algo que impide que se desactive el teclado? E incluso si hubiera, ¿por qué es miActivity
¿No aparece cuando la pantalla se desbloquea manualmente?