android lockscreen パッケージ名を取得する方法はありますか?
を使用してロック画面にアラートを表示したいAlertDialog.Builder
。そのため、ロック画面がアクティブになる時期とそのパッケージ名を知る必要があります。
android lockscreen パッケージ名を取得する方法はありますか?
を使用してロック画面にアラートを表示したいAlertDialog.Builder
。そのため、ロック画面がアクティブになる時期とそのパッケージ名を知る必要があります。
ロック画面が表示されているかどうかは、次の方法で検出できます。
((KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE)).inKeyguardRestrictedInputMode();
そして、次の方法で現在のトップ アクティビティを取得できます。
(ActivityManager) getSystemService(Service.ACTIVITY_SERVICE).getRunningTasks(1).get(0).topActivity;
これは通常、ロック画面のアクティビティですが、たとえば、ロック画面がアクティブなときに電話アプリが表示される可能性があります。この場合は、電話のアクティビティになります。
これを機能させるには、android.permission.GET_TASKS パーミッションが必要です。
本当にシンプルなソリューションです。
KeyguardManager km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);
if( km.inKeyguardRestrictedInputMode()) {
//it is locked
}
ネイティブソリューションを見つけました。Alert ダイアログを作成した後、それを表示する前に、これを適用します。
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
alertDialog.show();
これにより、ロック画面の上部にダイアログが表示されます。