2/n: Add default implementation for multi-biometric enroll
1) Adds a layout for multi-biometric selection in BiometricEnrollActivity 2) Adds widgets for checkboxes 3) Shows ConfirmLock*/ChooseLock* for multi-biometric devices in BiometricEnrollActivity 4) finish()'s when loses foreground 5) Adds default string for ChooseLock* and multi-biometrics, e.g. "Set up Password + Biometrics", as well as associated plumbing to bring the user back to BiometricEnrollActivity once the credential is enrolled 6) When max templates enrolled, checkbox becomes disabled and description string is updated Bug: 162341940 Bug: 152242790 Fixes: 161742393 No effect on existing devices with the following: Test: adb shell am start -a android.settings.BIOMETRIC_ENROLL Test: SUW Test: make -j RunSettingsRoboTests Exempt-From-Owner-Approval: Biometric-related change to EncryptionInterstitial Change-Id: I855460d50228ace24d4ec5fbe330f02ab406cc02
This commit is contained in:
@@ -111,28 +111,49 @@ final class SetNewPasswordController {
|
||||
*/
|
||||
public void dispatchSetNewPasswordIntent() {
|
||||
final Bundle extras;
|
||||
// TODO: handle the case with multiple biometrics, perhaps take an arg for biometric type?
|
||||
if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)
|
||||
&& mFaceManager != null
|
||||
&& mFaceManager.isHardwareDetected()
|
||||
&& !mFaceManager.hasEnrolledTemplates(mTargetUserId)
|
||||
&& !isFaceDisabledByAdmin()) {
|
||||
extras = getFaceChooseLockExtras();
|
||||
} else if (mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)
|
||||
&& mFingerprintManager != null
|
||||
|
||||
final boolean hasFeatureFingerprint = mPackageManager
|
||||
.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT);
|
||||
final boolean hasFeatureFace = mPackageManager
|
||||
.hasSystemFeature(PackageManager.FEATURE_FACE);
|
||||
|
||||
final boolean shouldShowFingerprintEnroll = mFingerprintManager != null
|
||||
&& mFingerprintManager.isHardwareDetected()
|
||||
&& !mFingerprintManager.hasEnrolledFingerprints(mTargetUserId)
|
||||
&& !isFingerprintDisabledByAdmin()) {
|
||||
&& !isFingerprintDisabledByAdmin();
|
||||
final boolean shouldShowFaceEnroll = mFaceManager != null
|
||||
&& mFaceManager.isHardwareDetected()
|
||||
&& !mFaceManager.hasEnrolledTemplates(mTargetUserId)
|
||||
&& !isFaceDisabledByAdmin();
|
||||
|
||||
if (hasFeatureFace && shouldShowFaceEnroll
|
||||
&& hasFeatureFingerprint && shouldShowFingerprintEnroll) {
|
||||
extras = getBiometricChooseLockExtras();
|
||||
} else if (hasFeatureFace && shouldShowFaceEnroll) {
|
||||
extras = getFaceChooseLockExtras();
|
||||
} else if (hasFeatureFingerprint && shouldShowFingerprintEnroll) {
|
||||
extras = getFingerprintChooseLockExtras();
|
||||
} else {
|
||||
extras = new Bundle();
|
||||
}
|
||||
|
||||
// No matter we show fingerprint options or not, we should tell the next activity which
|
||||
// user is setting new password.
|
||||
extras.putInt(Intent.EXTRA_USER_ID, mTargetUserId);
|
||||
mUi.launchChooseLock(extras);
|
||||
}
|
||||
|
||||
private Bundle getBiometricChooseLockExtras() {
|
||||
Bundle chooseLockExtras = new Bundle();
|
||||
chooseLockExtras.putInt(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
|
||||
PASSWORD_QUALITY_SOMETHING);
|
||||
chooseLockExtras.putBoolean(
|
||||
ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, true);
|
||||
chooseLockExtras.putBoolean(ChooseLockSettingsHelper.EXTRA_KEY_REQUEST_GK_PW_HANDLE, true);
|
||||
chooseLockExtras.putBoolean(ChooseLockSettingsHelper.EXTRA_KEY_FOR_BIOMETRICS, true);
|
||||
return chooseLockExtras;
|
||||
}
|
||||
|
||||
private Bundle getFingerprintChooseLockExtras() {
|
||||
Bundle chooseLockExtras = new Bundle();
|
||||
chooseLockExtras.putInt(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
|
||||
|
||||
Reference in New Issue
Block a user