Активность Android не отображается при включении экрана и отключении блокировки экрана
у меня естьBroadcastReceiver
это начинаетActivity
, ЕслиActivity
запускается при включенном экране, отображается и все нормально. Тем не менее, на устройствах ICS и JB (я не тестировал GB или HC, но проблема не существует с Froyo), еслиActivity
запускается, когда экран выключен, экран блокировки не отключен, и активность не отображается, когда телефон разблокирован (либо путем разблокировки его вручную, либо с помощью кода, введенного для пост-устройств Froyo).
Почему, по крайней мере, на устройствах ICS и JB экран блокировки не отключается без использования приведенного ниже кода, и почему активность не отображается, если экран был выключен, когдаActivity
был начат?
Вот код:
вBroadcastReceiver
:
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);
ВAlarmGoneOffActivity.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();
}
Редактировать: Я действительно предпочел бы не использоватьKeyguardLock.disableKeyguard()
потому что это приводит к отключению клавиатуры доKeyguardLock.reenableKeyguard()
что неудобно. Любые решения?
Edit2: Теперь я могу подтвердить, что проблема существует только на ICS и выше. Было ли что-то изменено, что мешает отключению клавиатуры? И даже если бы был, почему мойActivity
не отображается, когда экран разблокирован вручную?