Android - 如何在新版Android中解除锁屏?

3

我需要在某些情况下取消默认锁屏。使用KeyguardManager.KeyguardLock可以实现,但它已经过时,并且可能不适用于新的Android v4版本(ICS)。 相反,这里的android文档中提到,我应该使用"Use FLAG_DISMISS_KEYGUARD和/或FLAG_SHOW_WHEN_LOCKED"

所以我尝试了它们,但无论我尝试什么,关闭使用这些标志的活动后,我都回到默认锁屏,即使它不是安全的锁屏。 出现了什么问题,我应该如何解决?

我还读到有一些解决方法,可以替换启动器应用程序,但这是一个奇怪的修复方法,并且需要用户干预,即使应用程序实际上并不是启动器应用程序,我也不确定该如何进行操作。

这样的功能甚至可以用于替换您自己定制的锁屏

2个回答

4
请查看我们的问题8778,它似乎与您所面临的问题相似。如果您正在使用一个Activity,则FLAG_DISMISS_KEYGUARD常量将仅起作用,它不能是PixelFormat.TRANSLUCENT,并且它强制自己成为全屏,隐藏系统装饰,例如状态栏。虽然KeyguardManager API已被弃用,但它仍可在Android 4.0 ICS上运行,并且可以说是您最好的选择,可靠地禁用锁定屏幕并从代码的任何部分(甚至后台Service)进行操作。

看看这个问题:https://dev59.com/q2cs5IYBdhLWcg3wMxFF。它似乎API没有改变,但在API 13及以上版本上已经有所不同。 - Muzikant

0

如果有人需要最新的Kotlin代码:

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.O) {
    val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
    keyguardManager.requestDismissKeyguard(this, null)
    setShowWhenLocked(true)
} else {
    window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
            WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD)
}

如果您需要更详细的关于键盘锁标志的解释,请查看这里


1
等等,Android O 之后的新条件是什么?即使离开 Activity,它也能工作吗? - android developer
IF语句中的条件适用于Android O及以上版本。不幸的是,当离开活动时它无法工作,无论keyguard是安全还是非安全的。 - lomza
我明白了。所以这并不能回答我在问题中提出的问题,因为我写道“在关闭使用这些标志的活动后,我回到默认锁屏界面”。我想要解除锁定。而不是暂时显示某个活动,一旦离开它,锁屏就会出现。 - android developer
似乎在新版的Android上出现了一个bug,不确定这是否可能... - lomza
好的。这个问题非常古老。 - android developer

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