安卓 - 激活系统键盘锁(也称锁屏)

10

我需要激活Android系统的系统键盘锁(当你按下关机/挂断按钮时出现的那个)。请看这里:

img

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

那么,有谁知道如何从Android应用程序实现此功能吗?(如果需要特殊权限,那就没有问题,但更改设备设置不是解决方案...)

编辑:还是有人知道这根本不可能吗?顺便说一句,克雷格的解决方案发送密钥不再起作用(请参见评论)。


1
你也可以尝试进入IRC(freenode #android)并与首席开发人员本人交谈。 - Joe Phillips
5个回答

3

1

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

public void goToSleep(long time)

PowerManager.java中的方法。可以通过以下方式获取对它的引用:

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

然而这需要权限

android.permission.DEVICE_POWER

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

看起来似乎无法实现。这仅适用于1.1版本,我不知道1.5版本是否适用。


哦,那很糟糕。实际上,我觉得那甚至还不够,因为正如你在截图中看到的,我真的需要系统键锁。PowerManager文档中没有提及关于该屏幕的任何信息...它只说明设备将进入睡眠状态,但没有说系统键锁会被激活。 - Johannes Weiss
1
不确定它是否有用,因为它是版本小于1.1的源代码,但是: goToSleep 在 PowerManagerService 中调用 goToSleepLocked ,然后调用 setPowerState。在 setPowerState 中有这个注释: // 当用户按下电源按钮时,我们需要始终发送通知,表示它将进入睡眠状态,以便键盘保护会启动。但是,在屏幕淡出之前,我们无法执行此操作,因此不会过早显示键盘保护。 - JRL
在LockPatternKeyguardView中,以下方式调用ScreenLock: View createLockScreen() { return new LockScreen( mContext, mLockPatternUtils, mUpdateMonitor, mKeyguardScreenCallback); } - JRL
1
另外,请看一下这个帖子。它似乎证实了这是不可能的:http://groups.google.com/group/android-platform/browse_thread/thread/96dae5b512cb203b - JRL

1

你试过那个吗?就像你在上面看到的那样,锁屏界面真的出现了吗?我尝试了一下,确实锁定了键盘,但它并不是系统键盘锁。 - Johannes Weiss
啊,可能我在这里误解了你的问题。这是关于显示屏本身还是激活系统键锁吗? - sthg
我想要激活普通系统键锁,包括屏幕在内。如果用户激活了代码(或解锁图案),应该询问他关于该代码/图案的信息。仅锁定键盘是不够的 :-( - Johannes Weiss

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
啊,糟糕了,你知道其他的解决方案吗? - Craig Otis
哎呀,Android 1.0/即将推出的1.5是目标平台,所以那不行 :-( - Johannes Weiss

0
通过挖掘Android源代码,我们发现WindowManagerService似乎有一个公共方法(startAppFreezingScreenLocked),可以用于激活此功能。这可能是寻找答案的好地方,因为不幸的是,您似乎不能直接获取WindowManagerService对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接