解锁锁定屏幕
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 解锁屏幕。此命令发送解锁设备上锁定屏幕的事件。它可以与上面的电源按钮命令结合使用
应用程序暂停时如何在 iPhone 上获取屏幕锁定/解锁事件?