2009-04-09 20 views
9

我不得不启用Android的系统钥匙锁(一个你当你按下断电/挂断按钮)。在这里看到:的Android - 系统钥匙锁的激活(又名锁屏)

img

我已经浏览的文档,但一切我发现PowerManagerKeyguardManager。这两个似乎不是解决方案:-(。

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

编辑:还是没有人知道,这是绝对不可能在所有顺便说一句克雷格斯与发送键解决方案不起作用了(见注释)

+1

您也可以尝试在IRC上跳频(Freenode的#android)和主要开发人员自己 – 2009-04-20 15:24:47

回答

2

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

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

0

这里有一个很好的例子吗?。 :

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

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

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

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

+2

这种方法不再可用,它是为安全考虑删除说话。 – sooniln 2009-04-09 21:40:47

+0

啊无赖,你知道任何其他解决方案吗? – 2009-04-10 00:41:36

+0

嗯,Android 1.0 /即将到来的1.5是目标平台,所以这将无法正常工作:-( – 2009-04-15 20:58:50

0

挖掘Android源代码找到WindowManagerService,它似乎有一个公共方法(startAppFreezingScreenLocked)来激活它。这可能是一个开始寻找答案的好地方,不幸的是,它似乎并不像你可以直接获取WindowManagerService对象。

1

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

public void goToSleep(long time) 

方法PowerManager.java。这有可能以这种方式得到它的引用:

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

然而,这需要许可

android.permission.DEVICE_POWER 

这是只提供给系统中的2级权限。

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