diff --git a/res/values/config.xml b/res/values/config.xml index 4aa41425ce6..cf40b9461ea 100755 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -292,6 +292,9 @@ false + + true + diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java index 932c41073e4..bb16f0bb9b6 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java +++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java @@ -48,6 +48,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.SetupWizardUtils; import com.android.settings.core.InstrumentedActivity; +import com.android.settings.overlay.FeatureFactory; import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockPattern; import com.android.settings.password.ChooseLockSettingsHelper; @@ -215,11 +216,16 @@ public class BiometricEnrollActivity extends InstrumentedActivity { mIsFaceEnrollable = faceManager.getEnrolledFaces(mUserId).size() < maxEnrolls; - // exclude face enrollment from setup wizard if configured as a convenience - // isSetupWizard is always false for unicorn enrollment, so if consent is - // required check if setup has completed instead. - final boolean isSettingUp = isSetupWizard || (mParentalOptionsRequired + final boolean parentalConsent = isSetupWizard || (mParentalOptionsRequired && !WizardManagerHelper.isUserSetupComplete(this)); + if (parentalConsent && isMultiSensor && mIsFaceEnrollable) { + // Exclude face enrollment from setup wizard if feature config not supported + // in setup wizard flow, we still allow user enroll faces through settings. + mIsFaceEnrollable = FeatureFactory.getFactory(getApplicationContext()) + .getFaceFeatureProvider() + .isSetupWizardSupported(getApplicationContext()); + Log.d(TAG, "config_suw_support_face_enroll: " + mIsFaceEnrollable); + } } } if (mHasFeatureFingerprint) { diff --git a/src/com/android/settings/biometrics/face/FaceFeatureProvider.java b/src/com/android/settings/biometrics/face/FaceFeatureProvider.java index 26ea2615f1c..cabb528c24e 100644 --- a/src/com/android/settings/biometrics/face/FaceFeatureProvider.java +++ b/src/com/android/settings/biometrics/face/FaceFeatureProvider.java @@ -22,4 +22,7 @@ import android.content.Context; public interface FaceFeatureProvider { /** Returns true if attention checking is supported. */ boolean isAttentionSupported(Context context); + + /** Returns true if setup wizard supported face enrollment. */ + boolean isSetupWizardSupported(Context context); } diff --git a/src/com/android/settings/biometrics/face/FaceFeatureProviderImpl.java b/src/com/android/settings/biometrics/face/FaceFeatureProviderImpl.java index e5086007cde..0c8709b0c56 100644 --- a/src/com/android/settings/biometrics/face/FaceFeatureProviderImpl.java +++ b/src/com/android/settings/biometrics/face/FaceFeatureProviderImpl.java @@ -17,7 +17,8 @@ package com.android.settings.biometrics.face; import android.content.Context; -import android.provider.Settings; + +import androidx.annotation.NonNull; public class FaceFeatureProviderImpl implements FaceFeatureProvider { @@ -25,4 +26,9 @@ public class FaceFeatureProviderImpl implements FaceFeatureProvider { public boolean isAttentionSupported(Context context) { return true; } + + @Override + public boolean isSetupWizardSupported(@NonNull Context context) { + return true; + } }