我必须激活android的系统密钥锁(当您按下电源关闭 / 挂断按钮时获得的那个)。见这里:
我已经浏览了文档,但我找到的所有内容都是PowerManager和KeyguardManager。两者似乎都不是解决方案: - (。
那么,每个人都知道如何从Android应用程序实现这一目标吗? (如果需要特殊权限,这没有问题,但更改设备的设置不是解决方案......)
编辑:或者有人知道这绝对不可能吗?顺便说一句。带有发送密钥的craigs解决方案不再起作用(请参阅注释)。
答案 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对象。