0

有没有办法获取设置->安全->屏幕锁定的当前设置?是可以是“无”、“幻灯片”、“PIN”等的设置。我没兴趣改,只知道当前的那个。

我只对告诉其他任何人“无”感兴趣,所以这也可以。我已经看到他们为 API 23 添加了DevicePolicyManager.setKeyguardDisabled(). 我正在寻找等效的吸气剂,理想情况下适用于 API 14 及更高版本。

4

3 回答 3

1

经过几天的研究,我得出的结论是没有办法做到这一点。KeyguardManager方法无法区分NoneSlide。也无法从 Android 设置中查询。

唯一的方法是手动监控Keyguard屏幕何时熄灭,并假设 30 分钟后,如果它没有出现,那是因为None已设置。这显然不是一个好主意,但 Android 似乎决定不提供有关其锁定偏好的太多信息。

于 2016-04-15T09:00:46.563 回答
0

DevicePolicyManager不是你要找的东西。DevicePolicyManager适用于想要使用设备管理的应用程序。

用于KeyguardManager确定启用了哪种设备锁定以及设备当前是否被锁定。

于 2016-04-14T13:56:13.560 回答
0

我在 LockPatternUtils 类中找到了答案。我用 kotlin 编写代码,您可以轻松转换为 java 代码。

/**
* 判断手机系统是否关闭了锁屏界面。
* 如果第三方 ROM 更改了 LockPatternUtil 或者 UserHandle 类,调用此方法可能会抛出异常。
*/
fun isLockScreenDisabled(): Boolean {
    val lockPatternClass = Class.forName("com.android.internal.widget.LockPatternUtils")
    val lockPatternObject = lockPatternClass.getConstructor(Context::class.java)
            .newInstance(applicationContext)

    val isSecureMethod = lockPatternClass.getMethod("isLockScreenDisabled")
    var result = true

    try {
        result = isSecureMethod.invoke(lockPatternObject) as Boolean
    } catch (e: IllegalArgumentException) {

        val userHandleClass = Class.forName("android.os.UserHandle")
        val myUserIdMethod = userHandleClass.getMethod("myUserId")
        val userId = myUserIdMethod.invoke(userHandleClass)

        result = isSecureMethod.invoke(lockPatternClass, userId) as Boolean
    }

    return result
}

/**
* 判断手机系统是否启用了密码锁。
* 在 4.1 系统以下的版本,如果系统 rom 更改了 LockPatternUtil 类可能会抛出异常。
*/
fun isSecure(): Boolean {
    val keyguardManager = getSystemService(Context.KEYGUARD_SERVICE) as KeyguardManager
    return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
        keyguardManager.isKeyguardSecure
    } else {
        val lockPatternClass = Class.forName("com.android.internal.widget.LockPatternUtils")
        val lockPatternObject = lockPatternClass.getConstructor(Context::class.java)
                .newInstance(applicationContext)

        val isSecureMethod = lockPatternClass.getMethod("isSecure")
        var result = false

        try {
            result = isSecureMethod.invoke(lockPatternObject) as Boolean
        } catch (e: IllegalArgumentException) {

            val userHandleClass = Class.forName("android.os.UserHandle")
            val myUserIdMethod = userHandleClass.getMethod("myUserId")
            val userId = myUserIdMethod.invoke(userHandleClass)

            result = isSecureMethod.invoke(lockPatternClass, userId) as Boolean
        }

        result
    }
}
于 2017-11-28T02:19:51.370 回答