Launch multiple biometric enrollment when no biometric is enrolled

When a user clicks the biometric item in the Device unlock page and no
biometric is enrolled:
- Fingerint clicked: Launch fingerprint enroll then face enroll.
- Face clicked: Launch face enroll then fingerprint enroll.

Bug: 370940762
Test: atest FaceSafetySourceTest FingerprintSafetySourceTest
Flag: com.android.settings.flags.biometrics_onboarding_education
Change-Id: I874b96a75ec0c126ae1674bb6ab220a0a8533fcd
This commit is contained in:
Shawn Lin
2025-03-06 08:36:57 +00:00
parent de3ec7e343
commit c4ee2b83e5
5 changed files with 86 additions and 5 deletions

View File

@@ -16,6 +16,7 @@
package com.android.settings.safetycenter;
import static com.android.settings.biometrics.BiometricEnrollActivity.EXTRA_LAUNCH_FACE_ENROLL_FIRST;
import static com.android.settings.safetycenter.BiometricSourcesUtils.REQUEST_CODE_FACE_SETTING;
import android.content.Context;
@@ -27,6 +28,7 @@ import android.os.UserManager;
import android.safetycenter.SafetyEvent;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollActivity;
import com.android.settings.biometrics.BiometricNavigationUtils;
import com.android.settings.biometrics.face.FaceStatusUtils;
import com.android.settings.flags.Flags;
@@ -73,6 +75,16 @@ public final class FaceSafetySource {
Context profileParentContext = context.createContextAsUser(profileParentUserHandle, 0);
if (Utils.hasFaceHardware(context)) {
boolean isMultipleBiometricsEnrollmentNeeded =
BiometricSourcesUtils.isMultipleBiometricsEnrollmentNeeded(context, userId);
String settingClassName = isMultipleBiometricsEnrollmentNeeded
? BiometricEnrollActivity.class.getName()
: faceStatusUtils.getSettingsClassName();
Bundle bundle = new Bundle();
if (isMultipleBiometricsEnrollmentNeeded) {
// Launch face enrollment first then fingerprint enrollment.
bundle.putBoolean(EXTRA_LAUNCH_FACE_ENROLL_FIRST, true);
}
RestrictedLockUtils.EnforcedAdmin disablingAdmin = faceStatusUtils.getDisablingAdmin();
BiometricSourcesUtils.setBiometricSafetySourceData(
SAFETY_SOURCE_ID,
@@ -84,9 +96,9 @@ public final class FaceSafetySource {
biometricNavigationUtils
.getBiometricSettingsIntent(
context,
faceStatusUtils.getSettingsClassName(),
settingClassName,
disablingAdmin,
Bundle.EMPTY)
bundle)
.setIdentifier(Integer.toString(userId)),
REQUEST_CODE_FACE_SETTING),
disablingAdmin == null /* enabled */,