Активность Android не отображается при включении экрана и отключении блокировки экрана
у меня естьBroadcastReceiver
это начинаетActivity
, ЕслиActivity
запускается при включенном экране, отображается и все нормально. Тем не менее, на устройствах ICS и JB (у меня нетt протестировал GB или HC, но проблема не вне существует с Froyo), еслиActivity
запускается, когда экран выключен, экран блокировки не отключен, и активность не отображается, когда телефон разблокирован (либо путем разблокировки его вручную, либо с помощью кода, введенного для пост-устройств Froyo).
Почему, по крайней мере на устройствах ICS и JB, экран блокировки не отключается без использования приведенного ниже кода, и почемуt показ активности, если экран был выключен, когдаActivity
был начат?
Вот's код:
В :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
не отображается, когда экран разблокирован вручную?