【发布时间】:2012-10-09 23:03:36
【问题描述】:
有没有办法获取android锁屏包名?
我想使用AlertDialog.Builder 在锁定屏幕上显示警报。所以我需要知道锁屏何时激活以及它的包名。
【问题讨论】:
标签: android package lockscreen
有没有办法获取android锁屏包名?
我想使用AlertDialog.Builder 在锁定屏幕上显示警报。所以我需要知道锁屏何时激活以及它的包名。
【问题讨论】:
标签: android package lockscreen
您可以检测锁屏是否显示:
((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
}
【讨论】:
找到了本机解决方案。在构建警报对话框之后,在显示它之前,应用这个:
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
alertDialog.show();
这将在锁定屏幕顶部显示对话框。
【讨论】: