How do I get android lockscreen package name

2019-02-18 17:32发布

Is there a way to get the android lockscreen package name?

I want to show alert on the lockscreen using AlertDialog.Builder. So I need to know when the lockscreen is active and what it's package name.

3条回答
我只想做你的唯一
2楼-- · 2019-02-18 18:05

Really a Simple solution.

KeyguardManager km = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE);

if( km.inKeyguardRestrictedInputMode()) {
               //it is locked

                  }
查看更多
虎瘦雄心在
3楼-- · 2019-02-18 18:11

You can detect if the lockscreen is shown with:

((KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE)).inKeyguardRestrictedInputMode();

And you can get the current top activity with:

(ActivityManager) getSystemService(Service.ACTIVITY_SERVICE).getRunningTasks(1).get(0).topActivity;

This will usually be the lockscreen activity, but it is possible that for example the phone app is shown while the lockscreen is active: in this case it will be the phone activity.

You will need the android.permission.GET_TASKS permission for this to work.

查看更多
神经病院院长
4楼-- · 2019-02-18 18:17

Found a native solution. After you build the Alert dialog and before showing it, apply this:

AlertDialog alertDialog = new AlertDialog.Builder(context).create();
        alertDialog.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        alertDialog.show();

This will show the dialog on top of the lock screen.

查看更多
登录 后发表回答