diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 0ec6e5ccdfd..d4ae24833aa 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -217,7 +217,17 @@ public class FingerprintSettings extends SubSettings { if (manager == null || !manager.isHardwareDetected()) { return null; } - if (manager.isPowerbuttonFps() && isScreenOffUnlcokSupported()) { + List sensorProperties = + manager.getSensorPropertiesInternal(); + boolean isUdfps = false; + for (FingerprintSensorPropertiesInternal prop : sensorProperties) { + if (prop.isAnyUdfpsType()) { + isUdfps = true; + break; + } + } + if (!isUdfps && context.getResources().getBoolean( + org.lineageos.platform.internal.R.bool.config_fingerprintWakeAndUnlock)) { controllers.add( new FingerprintUnlockCategoryController( context, @@ -658,7 +668,7 @@ public class FingerprintSettings extends SubSettings { column2.mTitle = getText( R.string.security_fingerprint_disclaimer_lockscreen_disabled_2 ); - if (isSfps() && isScreenOffUnlcokSupported()) { + if (!isUdfps() && isScreenOffUnlcokSupported()) { column2.mLearnMoreOverrideText = getText( R.string.security_settings_fingerprint_settings_footer_learn_more); } @@ -681,9 +691,13 @@ public class FingerprintSettings extends SubSettings { } private boolean isUdfps() { - for (FingerprintSensorPropertiesInternal prop : mSensorProperties) { - if (prop.isAnyUdfpsType()) { - return true; + mFingerprintManager = Utils.getFingerprintManagerOrNull(getActivity()); + if (mFingerprintManager != null) { + mSensorProperties = mFingerprintManager.getSensorPropertiesInternal(); + for (FingerprintSensorPropertiesInternal prop : mSensorProperties) { + if (prop.isAnyUdfpsType()) { + return true; + } } } return false; @@ -755,7 +769,7 @@ public class FingerprintSettings extends SubSettings { // This needs to be after setting ids, otherwise // |mRequireScreenOnToAuthPreferenceController.isChecked| is always checking the primary // user instead of the user with |mUserId|. - if ((isSfps() && isScreenOffUnlcokSupported()) + if ((!isUdfps() && isScreenOffUnlcokSupported()) || (screenOffUnlockUdfps() && isScreenOffUnlcokSupported()) || getExtPreferenceProvider().getSize() > 0) { scrollToPreference(fpPrefKey); @@ -855,7 +869,7 @@ public class FingerprintSettings extends SubSettings { mFingerprintUnlockCategory = findPreference(KEY_FINGERPRINT_UNLOCK_CATEGORY); mFingerprintUnlockCategoryPreferenceController.setCategoryHasChildrenSupplier( this::fingerprintUnlockCategoryHasChild); - if (isSfps() && isScreenOffUnlcokSupported()) { + if (!isUdfps() && isScreenOffUnlcokSupported()) { // For both SFPS "screen on to auth" and "rest to unlock" final Preference restToUnlockPreference = FeatureFactory.getFeatureFactory() .getFingerprintFeatureProvider() @@ -985,7 +999,7 @@ public class FingerprintSettings extends SubSettings { private void updatePreferencesAfterFingerprintRemoved() { updateAddPreference(); updateUseFingerprintToEnableStatus(); - if ((isSfps() && isScreenOffUnlcokSupported()) || + if ((!isUdfps() && isScreenOffUnlcokSupported()) || (screenOffUnlockUdfps() && isScreenOffUnlcokSupported())) { updateFingerprintUnlockCategoryVisibility(); } @@ -1253,7 +1267,7 @@ public class FingerprintSettings extends SubSettings { private List buildPreferenceControllers(Context context) { final List controllers = createThePreferenceControllers(context); - if (isSfps() && isScreenOffUnlcokSupported()) { + if (!isUdfps() && isScreenOffUnlcokSupported()) { for (AbstractPreferenceController controller : controllers) { if (controller.getPreferenceKey() == KEY_FINGERPRINT_UNLOCK_CATEGORY) { mFingerprintUnlockCategoryPreferenceController = diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java index 2e9932238fc..f0b5c60ba7a 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettingsRequireScreenOnToAuthPreferenceController.java @@ -96,8 +96,7 @@ public class FingerprintSettingsRequireScreenOnToAuthPreferenceController @Override public int getAvailabilityStatus() { if (mFingerprintManager != null - && mFingerprintManager.isHardwareDetected() - && mFingerprintManager.isPowerbuttonFps()) { + && mFingerprintManager.isHardwareDetected()) { return mFingerprintManager.hasEnrolledTemplates(getUserId()) ? AVAILABLE : CONDITIONALLY_UNAVAILABLE; } else {