如何在屏幕锁定时显示活动?
使用Activity.getWindow()来获取活动的窗口;使用Window.addFlags()添加在任何一个的WindowManager.LayoutParams以下标志,你的愿望的:FLAG_DISMISS_KEYGUARD,FLAG_SHOW_WHEN_LOCKED,FLAG_TURN_SCREEN_ON
这是标准的汽车码头(和书桌码头)应用程序如何实现这种行为。
我使用了正在增加活动到顶级
private Window wind;
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
/******block is needed to raise the application if the lock is*********/
wind = this.getWindow();
wind.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD);
wind.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED);
wind.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON);
/* ^^^^^^^block is needed to raise the application if the lock is*/
}
谢谢。即使将它放在OnCreate上,也可以完美地工作。 – Cerin 2012-07-18 01:21:06
这将工作在AlertDialog? – user1762507 2013-04-08 23:59:54
我不知道。请测试此方法并告诉我们! – 2013-06-03 12:56:23
你将能够使用FLAG_DISMISS_KEYGUARD
仅适用于不具备安全锁启用像图案锁定手机。
FLAG_SHOW_WHEN_LOCKED
只会将您当前的活动放在最上面,如果用户试图移动到别处,他将不得不解锁屏幕。
或者,你可以在你的清单中添加权限:对
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
而且,在您的活动创造:
KeyguardManager manager = (KeyguardManager) this.getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock lock = manager.newKeyguardLock("abc");
lock.disableKeyguard();
弃用的方法 – user1940676 2014-02-02 15:56:37
使用锁的图案或输入PIN码,我需要添加以下也是因为屏幕在5秒内关闭:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
我希望不是,我不想让我的手机解锁ytime! (我可以拨错...) – 2010-09-25 10:47:32
我很想编辑这个“如何显示我的活动,当屏幕被锁定”,因为你不能在设备上以编程方式“解锁”设备... ... – StrikeForceZero 2013-03-13 18:54:33
确实正如SrikeForceZero解释的那样,您不能以编程方式“解锁”设备。下面的答案似乎表明你可以真正做的是展示如何在设备整体保持锁定的情况下制作特定的Activity * interactive * **。 – 2013-12-11 16:55:10