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?