Активность 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 не отображается, когда экран разблокирован вручную?

Ответы на вопрос(1)

Ваш ответ на вопрос