diff --git a/api/current.txt b/api/current.txt index 665b0548adbac..7ff6484afeedc 100644 --- a/api/current.txt +++ b/api/current.txt @@ -17613,6 +17613,7 @@ package android.provider { field public static final java.lang.String INPUT_METHOD_SELECTOR_VISIBILITY = "input_method_selector_visibility"; field public static final java.lang.String INSTALL_NON_MARKET_APPS = "install_non_market_apps"; field public static final java.lang.String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed"; + field public static final java.lang.String LOCK_BIOMETRIC_WEAK_FLAGS = "lock_biometric_weak_flags"; field public static final java.lang.String LOCK_PATTERN_ENABLED = "lock_pattern_autolock"; field public static final java.lang.String LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED = "lock_pattern_tactile_feedback_enabled"; field public static final java.lang.String LOCK_PATTERN_VISIBLE = "lock_pattern_visible_pattern"; diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index fbb32732fae60..d74ccb86e817d 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -793,6 +793,7 @@ public final class Settings { MOVED_TO_SECURE.add(Secure.HTTP_PROXY); MOVED_TO_SECURE.add(Secure.INSTALL_NON_MARKET_APPS); MOVED_TO_SECURE.add(Secure.LOCATION_PROVIDERS_ALLOWED); + MOVED_TO_SECURE.add(Secure.LOCK_BIOMETRIC_WEAK_FLAGS); MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_ENABLED); MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_VISIBLE); MOVED_TO_SECURE.add(Secure.LOCK_PATTERN_TACTILE_FEEDBACK_ENABLED); @@ -2656,6 +2657,13 @@ public final class Settings { */ public static final String LOCATION_PROVIDERS_ALLOWED = "location_providers_allowed"; + /** + * A flag containing settings used for biometric weak + * @hide + */ + public static final String LOCK_BIOMETRIC_WEAK_FLAGS = + "lock_biometric_weak_flags"; + /** * Whether autolock is enabled (0 = false, 1 = true) */ diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index acc3c1c39de1a..5a7d5195d0d9b 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -105,6 +105,12 @@ public class LockPatternUtils { */ public static final int MIN_PATTERN_REGISTER_FAIL = MIN_LOCK_PATTERN_SIZE; + /** + * The bit in LOCK_BIOMETRIC_WEAK_FLAGS to be used to indicate whether liveliness should + * be used + */ + public static final int FLAG_BIOMETRIC_WEAK_LIVELINESS = 0x1; + private final static String LOCKOUT_PERMANENT_KEY = "lockscreen.lockedoutpermanently"; private final static String LOCKOUT_ATTEMPT_DEADLINE = "lockscreen.lockoutattemptdeadline"; private final static String PATTERN_EVER_CHOSEN_KEY = "lockscreen.patterneverchosen"; @@ -877,6 +883,28 @@ public class LockPatternUtils { return true; } + /** + * Set whether biometric weak liveliness is enabled. + */ + public void setBiometricWeakLivelinessEnabled(boolean enabled) { + long currentFlag = getLong(Settings.Secure.LOCK_BIOMETRIC_WEAK_FLAGS, 0L); + long newFlag; + if (enabled) { + newFlag = currentFlag | FLAG_BIOMETRIC_WEAK_LIVELINESS; + } else { + newFlag = currentFlag & ~FLAG_BIOMETRIC_WEAK_LIVELINESS; + } + setLong(Settings.Secure.LOCK_BIOMETRIC_WEAK_FLAGS, newFlag); + } + + /** + * @return Whether the biometric weak liveliness is enabled. + */ + public boolean isBiometricWeakLivelinessEnabled() { + long currentFlag = getLong(Settings.Secure.LOCK_BIOMETRIC_WEAK_FLAGS, 0L); + return ((currentFlag & FLAG_BIOMETRIC_WEAK_LIVELINESS) != 0); + } + /** * Set whether the lock pattern is enabled. */