解锁锁定屏幕

Posted

技术标签:

【中文标题】解锁锁定屏幕【英文标题】:Unlock the lock screen 【发布时间】:2016-05-28 21:48:12 【问题描述】:

我正在编写一个应用程序来管理或自定义 android 设备的解锁屏幕。它按以下步骤工作:

    用户使用电源按钮锁定屏幕。 用户尝试解锁屏幕,因此再次按下电源按钮 我的活动弹出 -- 屏幕仍处于锁定状态 用户回答问题,如果回答正确,屏幕解锁

我为第三步创建了一个活动,并将以下代码添加到其onCreate 方法中:

Window window = getWindow();

window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
window.addFlags(WindowManager.LayoutParams.FLAG_SECURE);

这完全符合我的期望。我的问题是第四步。我搜索并找到了许多解决方案,但没有一个适合我。

How to lock/unlock phone programmatically -- 这只是在锁定屏幕顶部显示活动的一种方式。它不会解锁它。

Android screen lock/ unlock programatically -- 这个解决方案不仅被弃用,而且非常不可靠。它不会解锁屏幕,而是创建另一个锁并将其解锁。因此,使用它您可以访问应用程序,但无法访问敏感设置。 (试试看!)

我尝试将我的应用程序注册为设备管理员。那也没有帮助我。我可以更改设置,但无法解锁屏幕。

【问题讨论】:

【参考方案1】:

我的朋友

我查看了 Android Api Source Code(level 23) 我不知道如何在设备管理员或 root 权限下使用 KeyguardService 的方法,但 Android 使用此服务 (com.android.systemui.keyguard.KeyguardService.java)。 Android 绑定这个服务(IPC 和aidl 文件)并使用它。

另一边……

Keyguard 控制器类,它的名字是 KeyguardViewMediator。在“com.android.systemui.keyguard”包下。 (也许回顾一下这行 1157, 1433)

我不知道怎么做解锁动作,但是Android使用这个类。

【讨论】:

感谢您的回答。我不能诚实地说我理解它。我将使用另一种方法,看看我能想出什么......

以上是关于解锁锁定屏幕的主要内容,如果未能解决你的问题,请参考以下文章

sh 解锁屏幕。此命令发送解锁设备上锁定屏幕的事件。它可以与上面的电源按钮命令结合使用

识别屏幕锁定 n 解锁 ios 的滑动模式

解锁锁定屏幕后如何保持浮动操作按钮固定在我的视图中?

应用程序暂停时如何在 iPhone 上获取屏幕锁定/解锁事件?

iPad应用程序首先进入纵向模式,然后在解锁屏幕后进入横向模式,在锁定时处于横向模式

如何在锁定屏幕上执行通知操作(点击)?