android 的 KeyguardManager 中的 isDeviceLocked 和 isKeyguardSecure 有什么区别?

What's the difference between isDeviceLocked and isKeyguardSecure in android's KeyguardManager?

以下摘自http://developer.android.com/reference/android/app/KeyguardManager.html

public boolean isDeviceLocked ()

Returns 设备当前是否已锁定并且需要 PIN、图案或密码才能解锁。 Return如果当前解锁设备需要 PIN、图案或密码,则为真。

public boolean isKeyguardSecure ()

Return锁屏是否需要密码解锁。 Return如果键盘锁是安全的,则为真。

isDeviceLockedisKeyguardSecure 有什么区别?

public boolean isDeviceLocked ()

此方法考虑了锁屏的当前 UI 状态。

因此,如果设置了安全屏幕锁,它将违反 isKeyguardSecure() return false 如果:

  • 用户已解锁锁屏并正在使用设备
  • Smart Lock 功能(设置 -> 安全 -> Smart Lock)允许设备无需进一步验证即可解锁

public boolean isKeyguardSecure ()

此方法不考虑锁屏的当前 UI 状态。

因此,如果设置了安全屏幕锁定,它将始终 return true,无论锁屏是否已被用户解锁,或者 Smart Lock 是否允许解锁而无需进一步验证。

顺便说一句,我无法重现 ByteHamster 报告的行为。