Aktywność systemu Android nie jest wyświetlana, gdy ekran jest obudzony, a ekran blokady nie wyłącza się

mamBroadcastReceiver to zaczynaActivity. JeśliActivity jest uruchamiany, gdy ekran jest włączony, wyświetla się i wszystko jest w porządku. Jednak na urządzeniach ICS i JB (nie testowałem GB ani HC, ale problem nie istnieje w Froyo), jeśliActivity jest uruchamiany, gdy ekran jest wyłączony, ekran blokady nie jest wyłączony, a aktywność nie jest wyświetlana, gdy telefon jest odblokowany (poprzez odblokowanie go ręcznie lub za pomocą kodu, który umieściłem w przypadku urządzeń Froyo).

Dlaczego, przynajmniej na urządzeniach ICS i JB, ekran blokady nie zostaje wyłączony bez poniższego kodu i dlaczego aktywność nie pokazuje, czy ekran był wyłączony, gdyActivity zostało rozpoczęte?

Oto kod:

wBroadcastReceiver:

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);

WAlarmGoneOffActivity.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();
}

Edytować: Naprawdę wolałbym nie używaćKeyguardLock.disableKeyguard() ponieważ powoduje, że blokada klawiatury zostaje wyłączona doKeyguardLock.reenableKeyguard() co jest niewygodne. Jakieś rozwiązania?

Edit2: Mogę teraz potwierdzić, że problem istnieje tylko w ICS i powyżej. Czy coś się zmieniło, co uniemożliwia wyłączenie blokady klawiatury? A nawet jeśli tak było, to dlaczegoActivity nie pojawia się, gdy ekran jest odblokowany ręcznie?

questionAnswers(1)

yourAnswerToTheQuestion