をBroadcastReceiver
開始するがありActivity
ます。Activity
画面がオンのときにを起動すると、が表示され、すべて正常です。ただし、ICSおよびJBデバイス(GBまたはHCはテストしていませんが、Froyoには問題はありません)でActivity
、画面がオフのときに起動すると、ロック画面が無効にならず、アクティビティが表示されない場合電話のロックが解除されます(手動でロックを解除するか、フローズンヨーグルト後のデバイス用に入力したコードを使用してロックを解除します)。
少なくとも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
手動で画面のロックを解除したときに表示されないのはなぜですか?