Android - 激活系统密钥锁(又名锁屏)

时间:2009-04-09 10:58:27

标签: java android keyboard locking device-admin

我必须激活android的系统密钥锁(当您按下电源关闭 / 挂断按钮时获得的那个)。见这里:

img

我已经浏览了文档,但我找到的所有内容都是PowerManagerKeyguardManager。两者似乎都不是解决方案: - (。

那么,每个人都知道如何从Android应用程序实现这一目标吗? (如果需要特殊权限,这没有问题,但更改设备的设置不是解决方案......)

编辑:或者有人知道这绝对不可能吗?顺便说一句。带有发送密钥的craigs解决方案不再起作用(请参阅注释)。

5 个答案:

答案 0 :(得分:3)

我一直在寻找完全相同问题的答案。显然,在2.0之后,应用程序级别的设备管理员权限被删除。但是使用Froyo-2.2,设备策略管理器会向我们开发人员提供多种管理级别控制。

http://developer.android.com/guide/topics/admin/device-admin.html

答案 1 :(得分:1)

您正在寻找的是KeyguardManager中的 reenableKeyguard() 方法.KeyguardLock我的朋友!

答案 2 :(得分:1)

看起来屏幕锁定功能是使用以下方法执行的:

public void goToSleep(long time)
PowerManager.java中的

方法。可以这种方式引用它:

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

但是这需要许可

android.permission.DEVICE_POWER

这是系统仅可用的2级权限。

所以看起来这是不可行的。这仅适用于1.1版,我不知道1.5版。

答案 3 :(得分:0)

这里有一个很好的例子:

http://www.anddev.org/throwing-simulating_keystrokes_programatically-t717.html

看起来您可以通过编程方式将任何击键发送到系统。这听起来像你正在寻找的键码是KEYCODE_ENDCALL,但如果这不起作用,还有很多其他代码可以在这里尝试:

http://developer.android.com/reference/android/view/KeyEvent.html

我不知道是否有任何API调用导致锁定发生,但这似乎是一个非常坚固的解决方法,直到找到更好的解决方案。

答案 4 :(得分:0)

通过Android源搜索发现WindowManagerService似乎有一个公共方法(startAppFreezingScreenLocked)来激活它。这可能是开始寻找答案的好地方,不幸的是,它似乎不能直接获取WindowManagerService对象。