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

@@ -19,11 +19,15 @@ package com.android.settings.safetycenter;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.hardware.face.FaceManager;
import android.hardware.fingerprint.FingerprintManager;
import android.safetycenter.SafetyEvent;
import android.safetycenter.SafetySourceData;
import android.safetycenter.SafetySourceIssue;
import android.safetycenter.SafetySourceStatus;
import com.android.settings.Utils;
/** Static helpers for setting SafetyCenter data for biometric safety sources. */
public final class BiometricSourcesUtils {
@@ -89,6 +93,15 @@ public final class BiometricSourcesUtils {
.setSafetySourceData(context, safetySourceId, safetySourceData, safetyEvent);
}
/** Check whether the multiple biometrics enrollment is needed. */
public static boolean isMultipleBiometricsEnrollmentNeeded(Context context, int userId) {
FaceManager faceManager = Utils.getFaceManagerOrNull(context);
FingerprintManager fingerprintManager = Utils.getFingerprintManagerOrNull(context);
return Utils.isMultipleBiometricsSupported(context)
&& !faceManager.hasEnrolledTemplates(userId)
&& !fingerprintManager.hasEnrolledFingerprints(userId);
}
/** Helper method for creating a pending intent. */
public static PendingIntent createPendingIntent(
Context context, Intent intent, int requestCode) {