Android-Aktivität wird nicht angezeigt, wenn der Bildschirm aktiviert ist und die Bildschirmsperre nicht deaktiviert ist

Ich habe einBroadcastReceiver das beginnt einActivity. Wenn dasActivity wird gestartet, während der Bildschirm eingeschaltet ist, wird angezeigt und alles ist in Ordnung. Auf ICS- und JB-Geräten (ich habe GB oder HC nicht getestet, aber das Problem besteht bei Froyo nicht), wenn dieActivity wird gestartet, während der Bildschirm ausgeschaltet ist, der Sperrbildschirm nicht deaktiviert ist und die Aktivität nicht angezeigt wird, wenn das Telefon entsperrt ist (entweder durch manuelles Entsperren oder mit dem Code, den ich für Post-Froyo-Geräte eingegeben habe).

Warum wird der Sperrbildschirm auf mindestens ICS- und JB-Geräten ohne den unten angegebenen Code nicht deaktiviert, und warum wird in der Aktivität nicht angezeigt, ob der Bildschirm zum Zeitpunkt der Deaktivierung ausgeschaltet war?Activity wurde gestartet?

Hier ist der Code:

In demBroadcastReceiver:

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

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

Bearbeiten: Ich würde es wirklich vorziehen, nicht zu verwendenKeyguardLock.disableKeyguard() weil dadurch die Tastensperre deaktiviert wird, bisKeyguardLock.reenableKeyguard() das ist unbequem. Irgendwelche Lösungen?

Edit2: Ich kann jetzt bestätigen, dass das Problem nur auf ICS und höher besteht. Wurde etwas geändert, das verhindert, dass die Tastensperre deaktiviert wird? Und selbst wenn ja, warum ist meine?Activity Wird nicht angezeigt, wenn der Bildschirm manuell entsperrt wird?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage