我试图找到暂时禁用PatternLock屏幕的方法。我不希望完全禁用锁,但用户不需要一直重新输入他的模式。
我的想法是编写一个服务,在一些用户活动后禁用该模式,并在一段时间后重新启用它。 (甚至更多)
市场上有些类似的东西(即AutoLock或TogglePattern),所以必须有一个解决方案。
我知道我可以通过以下方式完全阻止锁定:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
或
KeyguardLock.disableKeyguard()
但那不是我追求的目标。
我在设置活动使用的android源代码中看到了类com.android.internal.widget.LockPatternUtils
,但是这个类不是(至少据我所知)可以通过“普通”应用程序访问。
你有什么建议吗?
答案 0 :(得分:4)
从2.0(API级别5)开始,您可以使用此窗口标志来防止在显示窗口时显示锁定屏幕:
您还可以使用此标志,以便在显示窗口时关闭非安全键盘锁:
请注意,这些不允许您绕过应用程序环境之外的锁定屏幕,这是一个有意的设计决定。
还有一个较旧的API可让您以类似于唤醒锁的方式隐藏锁定屏幕:
在较新的平台上不鼓励使用此API,因为它很容易出错并导致不良行为(屏幕在用户期望时不会锁定),并且基本上不可能在已解锁的活动之间进行干净的转换状态。例如,这是调用屏幕最初用于在显示时隐藏锁定屏幕的API,但从2.0开始,它已切换到新的清除窗口标志。同样适用于闹钟等。
答案 1 :(得分:3)
您是否尝试查看com.android.internal.widget.LockPatternUtils
的代码并执行其操作?
它有这样的东西:
public void setLockPatternEnabled(boolean enabled) {
setBoolean(android.provider.Settings.System.LOCK_PATTERN_ENABLED, enabled);
}
private void setBoolean(String systemSettingKey, boolean enabled) {
android.provider.Settings.System.putInt(
mContentResolver,
systemSettingKey,
enabled ? 1 : 0);
}
您可以在代码中执行类似操作。