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?