Android – 激活系统键锁(又名锁屏)

我必须激活android的系统密钥locking(当您按下关机 / 挂断button时获得的)。 看这里:

IMG

我已经浏览了文档,但是我find的所有东西都是PowerManager和KeyguardManager 。 两者似乎都不是解决方法:-(。

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

编辑 :或者有人知道,这是绝对不可能的? 顺便说一句。 craigs解决scheme与发送键不起作用了(见评论)。

Solutions Collecting From Web of "Android – 激活系统键锁(又名锁屏)"

我一直在寻找一个完全相同的问题的答案。 显然,在2.0之后,应用程序级别的设备pipe理员权限被删除。 但是在Froyo – 2.2中,设备策略pipe理器透露给予我们开发人员多种pipe理级别的控制权。

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

你要找的是KeyguardManager.KeyguardLock中的reenableKeyguard ()方法!

看起来像使用以下方法执行屏幕lockingfunction:

public void goToSleep(long time) 

方法在PowerManager.java 。 有可能以这种方式得到它的参考:

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

但是这需要许可

 android.permission.DEVICE_POWER 

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

所以看起来这是不可行的。 这只是版本1.1,我不知道1.5。

这里有一个很好的例子:

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

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

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

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

通过Android源代码挖掘发现WindowManagerService似乎有一个公共的方法( startAppFreezingScreenLocked )来激活这个。 这可能是一个很好的开始寻找答案的地方,不幸的是,你不能直接得到一个WindowManagerService对象。