【发布时间】:2014-12-09 23:28:28
【问题描述】:
我试图在手机锁定时显示活动或对话框。 我曾尝试使用 WakeLock,但它不起作用,而且我只能在手机解锁后才能看到活动?
这样做的正确方法是什么?
【问题讨论】:
标签: android
我试图在手机锁定时显示活动或对话框。 我曾尝试使用 WakeLock,但它不起作用,而且我只能在手机解锁后才能看到活动?
这样做的正确方法是什么?
【问题讨论】:
标签: android
要在不关闭键盘保护的情况下显示活动,请尝试以下操作:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView();
【讨论】:
您应该使用KeyGuardManager 自动解锁设备,然后获取您的唤醒锁。
KeyguardManager kgm = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);
boolean isKeyguardUp = kgm.inKeyguardRestrictedInputMode();
KeyguardLock kgl = kgm.newKeyguardLock("Your Activity/Service name");
if(isKeyguardUp){
kgl.disableKeyguard();
isKeyguardUp = false;
}
wl.acquire(); //use your wake lock once keyguard is down.
【讨论】:
要在锁定屏幕上显示一个弹出窗口,试试这个,来自我的另一个 answer:
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
alertDialog.show();
要在锁定屏幕上显示活动,或者在活动开始时基本上移除锁定屏幕,请尝试以下操作:
public void onCreate(Bundle savedInstanceState){
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
...
}
这两个选项都需要 api 5+
【讨论】: