これらのメソッドの代わりに WindowManager.LayoutParams クラスの FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED を使うことが推奨されています。
■ FLAG_DISMISS_KEYGUARD
このフラグが設定されると、secure lock keyguard でない場合、ウィンドウによって keyguard が表示されなくなる。security が必要でない keyguard では、ユーザーが他のウィンドウに移動したときに再表示されない(反対に FLAG_SHOW_WHEN_LOCKED では、secure、non-secure 両方の key guard を一時的に隠して、ユーザーがこれらを隠さない設定の他の UI に移動したときに再表示する。
FLAG_SHOW_WHEN_LOCKED が同時に設定されていないと、keyguard が現在アクティブでユーザーより secure な場合(= unlock pattern を要求している場合)、ウィンドウを表示する前に lock pattern を確認する必要がある。
■ FLAG_SHOW_WHEN_LOCKED
スクリーンがロックされたときに Windows に表示させるための特別なフラグで、このフラグをセットすると、アプリケーションウィンドウが key guard や他のロックスクリーンよりも優先される。
FLAG_KEEP_SCREEN_ON と組み合わせて使うことで、画面をオンした後、 key guard を表示する前に直接ウィンドウを表示できる。
FLAG_DISMISS_KEYGUARD と組み合わせて使うことで、自動で non-secure keyguards を表示させないようにできる。このフラグは一番上の full-screen window にのみ適用される。
関連するフラグ
■ FLAG_ALLOW_LOCK_WHILE_SCREEN_ON
■ FLAG_KEEP_SCREEN_ON
public class KeyguardSampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Window window = getWindow();
// lock pattern を設定していても、
// このアプリ起動中は画面オン時にロックはでない
// 別のアプリやホームに移動するときにロックがでる
window.setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
// lock pattern を設定していない場合、
// このアプリ起動中は画面オン時にロックはでない
window.setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
}
}
■ まとめ
1. lock pattern あり、FLAG_SHOW_WHEN_LOCKED
このアプリ起動中は画面オン時にロックはでない
別のアプリやホームに移動するときにロックがでる
2. lock pattern あり、FLAG_DISMISS_KEYGUARD
普通にロックがでる
3. lock pattern あり、FLAG_SHOW_WHEN_LOCKED, FLAG_DISMISS_KEYGUARD
このアプリ起動中は画面オン時にロックはでない
別のアプリやホームに移動するときにロックがでる
4. lock pattern なし、FLAG_SHOW_WHEN_LOCKED
このアプリ起動中は画面オン時にロックはでない
別のアプリやホームに移動するときにロックがでる
5. lock pattern なし、FLAG_DISMISS_KEYGUARD
このアプリ起動中は画面オン時にロックはでない
別のアプリやホームに移動するときもロックはでない
6. lock pattern なし、FLAG_SHOW_WHEN_LOCKED, FLAG_DISMISS_KEYGUARD
このアプリ起動中は画面オン時にロックはでない
別のアプリやホームに移動するときもロックはでない
0 件のコメント:
コメントを投稿