【发布时间】:2013-08-09 04:54:42
【问题描述】:
用户希望我的应用在使用后关闭屏幕。目前,我通过设备管理员权限和DevicePolicyManager.lockNow() 实现了这一点,如果安全设置设置为 PIN/Pattern/FaceUnlock 等,它可以正常工作。
但是,如果使用 Slide/None,上述命令只会将用户带到主屏幕(或不执行任何操作),这是可以理解的,因为没有什么可以“锁定”。在这种情况下有什么办法可以实现关闭屏幕?如果这很重要,我的应用需要 SDK>=16。
所以我想我的问题是:应用程序如何可靠地关闭屏幕(我没有持有wakelock,我使用的是WindowManager-flags FLAG_TURN_SCREEN_ON在onAttachedToWindow())。
我的应用程序的“流程”是:
- 活动由屏幕关闭时的意图启动,显示在屏幕上的键盘保护/开关上方,并带有上述标志
- 用户主动关闭我的活动,我正在调用lockNow() 和finish(),并且用户希望屏幕关闭。如果用户使用无/滑动锁,这不起作用,而是显示用户的主屏幕
谢谢!
【问题讨论】:
-
如果您开发系统应用程序(例如使用平台密钥签名),您可以使用
goToSleepmethod of thePowerManagerclass... -
谢谢,dst!不幸的是,这是一个“普通”的应用程序:-/
-
如果您请求
WRITE_SETTINGS,您可以将屏幕超时设置为 1 秒 -android.provider.Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 1000);当然,那您搞乱了用户的设置,但我想不通更好的方法来做到这一点。我已经见过可以做到这一点的应用 - NoLED 是最突出的例子。 -
谢谢,德利安!我将尝试屏幕超时解决方案(并在不久之后将其设置回用户选择的值)。还有像 Screen Off 这样的应用程序可以在任何版本的 Android 上(可靠地)执行此操作,我会尝试再次寻找开源示例。
-
您愿意发表您的评论作为答案吗,Delyan?你的方法是我最终的做法,对于使用“幻灯片”或“无”系统锁屏的用户来说,这似乎是目前实现这一目标的唯一方法。
标签: android device-admin