Loading src/com/android/settings/MainClear.java +7 −4 Original line number Diff line number Diff line Loading @@ -183,13 +183,16 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis if (requestCode == KEYGUARD_REQUEST) { final int userId = getActivity().getUserId(); if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), false /* biometricsSuccessfullyAuthenticated */, final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), false /* biometricsAuthenticationRequested */, userId)) { userId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRICS_REQUEST, userId, false /* hideBackground */); return; } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { return; } } Loading src/com/android/settings/Utils.java +32 −16 Original line number Diff line number Diff line Loading @@ -199,6 +199,15 @@ public final class Utils extends com.android.settingslib.Utils { return ActivityManager.isUserAMonkey(); } /** * Enum for returning biometric status. * {@link OK} no error detected when requesting mandatory biometrics authentication * {@link NOT_ACTIVE} mandatory biometrics is not active * {@link LOCKOUT} biometric sensors are in lockout mode * {@link ERROR} corresponds to other errors */ public enum BiometricStatus {OK, NOT_ACTIVE, LOCKOUT, ERROR} /** * Returns whether the device is voice-capable (meaning, it is also a phone). */ Loading Loading @@ -1490,33 +1499,40 @@ public final class Utils extends com.android.settingslib.Utils { * Request biometric authentication if all requirements for mandatory biometrics is satisfied. * * @param context of the corresponding activity/fragment * @param biometricsSuccessfullyAuthenticated if the user has already authenticated using * biometrics * @param biometricsAuthenticationRequested if the activity/fragment has already requested for * biometric prompt * @param userId user id for the authentication request * @return true if all requirements for mandatory biometrics is satisfied * @return biometric status when mandatory biometrics authentication is requested */ public static boolean requestBiometricAuthenticationForMandatoryBiometrics( public static BiometricStatus requestBiometricAuthenticationForMandatoryBiometrics( @NonNull Context context, boolean biometricsSuccessfullyAuthenticated, boolean biometricsAuthenticationRequested, int userId) { final BiometricManager biometricManager = context.getSystemService(BiometricManager.class); if (biometricManager == null) { Log.e(TAG, "Biometric Manager is null."); return false; return BiometricStatus.NOT_ACTIVE; } final int status = biometricManager.canAuthenticate(userId, BiometricManager.Authenticators.MANDATORY_BIOMETRICS); return android.hardware.biometrics.Flags.mandatoryBiometrics() && status == BiometricManager.BIOMETRIC_SUCCESS && !biometricsSuccessfullyAuthenticated && !biometricsAuthenticationRequested; if (android.hardware.biometrics.Flags.mandatoryBiometrics() && !biometricsAuthenticationRequested) { switch(status) { case BiometricManager.BIOMETRIC_SUCCESS: return BiometricStatus.OK; case BiometricManager.BIOMETRIC_ERROR_LOCKOUT: return BiometricStatus.LOCKOUT; case BiometricManager.BIOMETRIC_ERROR_MANDATORY_NOT_ACTIVE: return BiometricStatus.NOT_ACTIVE; default: return BiometricStatus.ERROR; } } return BiometricStatus.NOT_ACTIVE; } /** * Launch biometric prompt for mandatory biometrics. Call * {@link #requestBiometricAuthenticationForMandatoryBiometrics(Context, boolean, boolean, int)} * {@link #requestBiometricAuthenticationForMandatoryBiometrics(Context, boolean, int)} * to check if all requirements for mandatory biometrics is satisfied * before launching biometric prompt. * Loading src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java +15 −33 Original line number Diff line number Diff line Loading @@ -75,14 +75,11 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { @VisibleForTesting static final String RETRY_PREFERENCE_BUNDLE = "retry_preference_bundle"; private static final String BIOMETRICS_AUTH_REQUESTED = "biometrics_auth_requested"; private static final String BIOMETRICS_AUTHENTICATED_SUCCESSFULLY = "biometrics_authenticated_successfully"; protected int mUserId; protected long mGkPwHandle; private boolean mConfirmCredential; private boolean mBiometricsAuthenticationRequested; private boolean mBiometricsSuccessfullyAuthenticated; @Nullable private FaceManager mFaceManager; @Nullable private FingerprintManager mFingerprintManager; // Do not finish() if choosing/confirming credential, showing fp/face settings, or launching Loading Loading @@ -120,9 +117,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { mGkPwHandle = BiometricUtils.getGatekeeperPasswordHandle(getIntent()); } mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra( BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false); if (savedInstanceState != null) { mConfirmCredential = savedInstanceState.getBoolean(SAVE_STATE_CONFIRM_CREDETIAL); mDoNotFinishActivity = savedInstanceState.getBoolean(DO_NOT_FINISH_ACTIVITY); Loading @@ -135,21 +129,12 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { } mBiometricsAuthenticationRequested = savedInstanceState.getBoolean( BIOMETRICS_AUTH_REQUESTED); mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean( BIOMETRICS_AUTHENTICATED_SUCCESSFULLY); } if (mGkPwHandle == 0L && !mConfirmCredential) { mConfirmCredential = true; launchChooseOrConfirmLock(); } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics( getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } updateUnlockPhonePreferenceSummary(); final Preference useInAppsPreference = findPreference(getUseInAppsPreferenceKey()); Loading @@ -161,13 +146,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { @Override public void onResume() { super.onResume(); if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId) && mGkPwHandle != 0L) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } if (!mConfirmCredential) { mDoNotFinishActivity = false; } Loading Loading @@ -204,9 +182,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); extras.putInt(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, sensorId); extras.putLong(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge); extras.putBoolean( BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, mBiometricsSuccessfullyAuthenticated); onFaceOrFingerprintPreferenceTreeClick(preference); } catch (IllegalStateException e) { if (retry) { Loading Loading @@ -236,9 +211,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { final Bundle extras = preference.getExtras(); extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); extras.putLong(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge); extras.putBoolean( BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, mBiometricsSuccessfullyAuthenticated); onFaceOrFingerprintPreferenceTreeClick(preference); } catch (IllegalStateException e) { if (retry) { Loading Loading @@ -323,8 +295,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { } outState.putBoolean(BIOMETRICS_AUTH_REQUESTED, mBiometricsAuthenticationRequested); outState.putBoolean(BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, mBiometricsSuccessfullyAuthenticated); } @Override Loading @@ -342,6 +312,20 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { com.google.android.setupdesign.R.anim.sud_slide_next_out); retryPreferenceKey(mRetryPreferenceKey, mRetryPreferenceExtra); } final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics( getActivity(), mBiometricsAuthenticationRequested, mUserId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { finish(); return; } } else { Log.d(getLogTag(), "Data null or GK PW missing."); finish(); Loading @@ -354,9 +338,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { mRetryPreferenceExtra = null; } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { mBiometricsAuthenticationRequested = false; if (resultCode == RESULT_OK) { mBiometricsSuccessfullyAuthenticated = true; } else { if (resultCode != RESULT_OK) { finish(); } } Loading src/com/android/settings/biometrics/face/FaceSettings.java +12 −17 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import static com.android.settings.Utils.isPrivateProfile; import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.ENROLL_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT; Loading Loading @@ -98,7 +97,6 @@ public class FaceSettings extends DashboardFragment { private boolean mConfirmingPassword; private boolean mBiometricsAuthenticationRequested; private boolean mBiometricsSuccessfullyAuthenticated; private final FaceSettingsRemoveButtonPreferenceController.Listener mRemovalListener = () -> { Loading Loading @@ -150,8 +148,6 @@ public class FaceSettings extends DashboardFragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putByteArray(KEY_TOKEN, mToken); outState.putBoolean(KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED, mBiometricsSuccessfullyAuthenticated); } @Override Loading @@ -171,8 +167,6 @@ public class FaceSettings extends DashboardFragment { mToken = getIntent().getByteArrayExtra(KEY_TOKEN); mSensorId = getIntent().getIntExtra(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, -1); mChallenge = getIntent().getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, 0L); mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra( EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false); mUserId = getActivity().getIntent().getIntExtra( Intent.EXTRA_USER_ID, UserHandle.myUserId()); Loading Loading @@ -241,8 +235,6 @@ public class FaceSettings extends DashboardFragment { if (savedInstanceState != null) { mToken = savedInstanceState.getByteArray(KEY_TOKEN); mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean( KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED); } } Loading Loading @@ -288,12 +280,6 @@ public class FaceSettings extends DashboardFragment { Log.e(TAG, "Password not set"); finish(); } } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else { mAttentionController.setToken(mToken); mEnrollController.setToken(mToken); Loading Loading @@ -330,6 +316,17 @@ public class FaceSettings extends DashboardFragment { final boolean hasEnrolled = mFaceManager.hasEnrolledTemplates(mUserId); mEnrollButton.setVisible(!hasEnrolled); mRemoveButton.setVisible(hasEnrolled); final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsAuthenticationRequested, mUserId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { finish(); } } } else if (requestCode == ENROLL_REQUEST) { if (resultCode == RESULT_TIMEOUT) { Loading @@ -338,9 +335,7 @@ public class FaceSettings extends DashboardFragment { } } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { mBiometricsAuthenticationRequested = false; if (resultCode == RESULT_OK) { mBiometricsSuccessfullyAuthenticated = true; } else { if (resultCode != RESULT_OK) { finish(); } } Loading src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +13 −26 Original line number Diff line number Diff line Loading @@ -239,8 +239,6 @@ public class FingerprintSettings extends SubSettings { "security_settings_fingerprint_footer"; private static final String KEY_BIOMETRICS_AUTHENTICATION_REQUESTED = "biometrics_authentication_requested"; private static final String KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED = "biometrics_successfully_authenticated"; private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000; private static final int MSG_FINGER_AUTH_SUCCESS = 1001; Loading Loading @@ -276,7 +274,6 @@ public class FingerprintSettings extends SubSettings { private byte[] mToken; private boolean mLaunchedConfirm; private boolean mBiometricsAuthenticationRequested; private boolean mBiometricsSuccessfullyAuthenticated; private boolean mHasFirstEnrolled = true; private Drawable mHighlightDrawable; private int mUserId; Loading Loading @@ -451,8 +448,6 @@ public class FingerprintSettings extends SubSettings { ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); mChallenge = activity.getIntent() .getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, -1L); mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra( BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false); mAuthenticateSidecar = (FingerprintAuthenticateSidecar) getFragmentManager().findFragmentByTag(TAG_AUTHENTICATE_SIDECAR); Loading Loading @@ -494,8 +489,6 @@ public class FingerprintSettings extends SubSettings { mIsEnrolling = savedInstanceState.getBoolean(KEY_IS_ENROLLING, mIsEnrolling); mHasFirstEnrolled = savedInstanceState.getBoolean(KEY_HAS_FIRST_ENROLLED, mHasFirstEnrolled); mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean( KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED); mBiometricsAuthenticationRequested = savedInstanceState.getBoolean( KEY_BIOMETRICS_AUTHENTICATION_REQUESTED); } Loading @@ -506,12 +499,6 @@ public class FingerprintSettings extends SubSettings { if (mToken == null) { mLaunchedConfirm = true; launchChooseOrConfirmLock(); } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (!mHasFirstEnrolled) { mIsEnrolling = true; addFirstFingerprint(null); Loading Loading @@ -801,14 +788,6 @@ public class FingerprintSettings extends SubSettings { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator(getActivity().getApplicationContext(), null, null); if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } } private void updatePreferences() { Loading Loading @@ -858,8 +837,6 @@ public class FingerprintSettings extends SubSettings { outState.putBoolean(KEY_HAS_FIRST_ENROLLED, mHasFirstEnrolled); outState.putBoolean(KEY_BIOMETRICS_AUTHENTICATION_REQUESTED, mBiometricsAuthenticationRequested); outState.putBoolean(KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED, mBiometricsSuccessfullyAuthenticated); } @Override Loading Loading @@ -1023,6 +1000,18 @@ public class FingerprintSettings extends SubSettings { updateAddPreference(); }); } final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics( getActivity(), mBiometricsAuthenticationRequested, mUserId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { finish(); } } else { Log.d(TAG, "Data null or GK PW missing"); finish(); Loading Loading @@ -1075,9 +1064,7 @@ public class FingerprintSettings extends SubSettings { updateAddPreference(); } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { mBiometricsAuthenticationRequested = false; if (resultCode == RESULT_OK) { mBiometricsSuccessfullyAuthenticated = true; } else { if (resultCode != RESULT_OK) { finish(); } } Loading Loading
src/com/android/settings/MainClear.java +7 −4 Original line number Diff line number Diff line Loading @@ -183,13 +183,16 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis if (requestCode == KEYGUARD_REQUEST) { final int userId = getActivity().getUserId(); if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), false /* biometricsSuccessfullyAuthenticated */, final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), false /* biometricsAuthenticationRequested */, userId)) { userId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRICS_REQUEST, userId, false /* hideBackground */); return; } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { return; } } Loading
src/com/android/settings/Utils.java +32 −16 Original line number Diff line number Diff line Loading @@ -199,6 +199,15 @@ public final class Utils extends com.android.settingslib.Utils { return ActivityManager.isUserAMonkey(); } /** * Enum for returning biometric status. * {@link OK} no error detected when requesting mandatory biometrics authentication * {@link NOT_ACTIVE} mandatory biometrics is not active * {@link LOCKOUT} biometric sensors are in lockout mode * {@link ERROR} corresponds to other errors */ public enum BiometricStatus {OK, NOT_ACTIVE, LOCKOUT, ERROR} /** * Returns whether the device is voice-capable (meaning, it is also a phone). */ Loading Loading @@ -1490,33 +1499,40 @@ public final class Utils extends com.android.settingslib.Utils { * Request biometric authentication if all requirements for mandatory biometrics is satisfied. * * @param context of the corresponding activity/fragment * @param biometricsSuccessfullyAuthenticated if the user has already authenticated using * biometrics * @param biometricsAuthenticationRequested if the activity/fragment has already requested for * biometric prompt * @param userId user id for the authentication request * @return true if all requirements for mandatory biometrics is satisfied * @return biometric status when mandatory biometrics authentication is requested */ public static boolean requestBiometricAuthenticationForMandatoryBiometrics( public static BiometricStatus requestBiometricAuthenticationForMandatoryBiometrics( @NonNull Context context, boolean biometricsSuccessfullyAuthenticated, boolean biometricsAuthenticationRequested, int userId) { final BiometricManager biometricManager = context.getSystemService(BiometricManager.class); if (biometricManager == null) { Log.e(TAG, "Biometric Manager is null."); return false; return BiometricStatus.NOT_ACTIVE; } final int status = biometricManager.canAuthenticate(userId, BiometricManager.Authenticators.MANDATORY_BIOMETRICS); return android.hardware.biometrics.Flags.mandatoryBiometrics() && status == BiometricManager.BIOMETRIC_SUCCESS && !biometricsSuccessfullyAuthenticated && !biometricsAuthenticationRequested; if (android.hardware.biometrics.Flags.mandatoryBiometrics() && !biometricsAuthenticationRequested) { switch(status) { case BiometricManager.BIOMETRIC_SUCCESS: return BiometricStatus.OK; case BiometricManager.BIOMETRIC_ERROR_LOCKOUT: return BiometricStatus.LOCKOUT; case BiometricManager.BIOMETRIC_ERROR_MANDATORY_NOT_ACTIVE: return BiometricStatus.NOT_ACTIVE; default: return BiometricStatus.ERROR; } } return BiometricStatus.NOT_ACTIVE; } /** * Launch biometric prompt for mandatory biometrics. Call * {@link #requestBiometricAuthenticationForMandatoryBiometrics(Context, boolean, boolean, int)} * {@link #requestBiometricAuthenticationForMandatoryBiometrics(Context, boolean, int)} * to check if all requirements for mandatory biometrics is satisfied * before launching biometric prompt. * Loading
src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java +15 −33 Original line number Diff line number Diff line Loading @@ -75,14 +75,11 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { @VisibleForTesting static final String RETRY_PREFERENCE_BUNDLE = "retry_preference_bundle"; private static final String BIOMETRICS_AUTH_REQUESTED = "biometrics_auth_requested"; private static final String BIOMETRICS_AUTHENTICATED_SUCCESSFULLY = "biometrics_authenticated_successfully"; protected int mUserId; protected long mGkPwHandle; private boolean mConfirmCredential; private boolean mBiometricsAuthenticationRequested; private boolean mBiometricsSuccessfullyAuthenticated; @Nullable private FaceManager mFaceManager; @Nullable private FingerprintManager mFingerprintManager; // Do not finish() if choosing/confirming credential, showing fp/face settings, or launching Loading Loading @@ -120,9 +117,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { mGkPwHandle = BiometricUtils.getGatekeeperPasswordHandle(getIntent()); } mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra( BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false); if (savedInstanceState != null) { mConfirmCredential = savedInstanceState.getBoolean(SAVE_STATE_CONFIRM_CREDETIAL); mDoNotFinishActivity = savedInstanceState.getBoolean(DO_NOT_FINISH_ACTIVITY); Loading @@ -135,21 +129,12 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { } mBiometricsAuthenticationRequested = savedInstanceState.getBoolean( BIOMETRICS_AUTH_REQUESTED); mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean( BIOMETRICS_AUTHENTICATED_SUCCESSFULLY); } if (mGkPwHandle == 0L && !mConfirmCredential) { mConfirmCredential = true; launchChooseOrConfirmLock(); } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics( getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } updateUnlockPhonePreferenceSummary(); final Preference useInAppsPreference = findPreference(getUseInAppsPreferenceKey()); Loading @@ -161,13 +146,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { @Override public void onResume() { super.onResume(); if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId) && mGkPwHandle != 0L) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } if (!mConfirmCredential) { mDoNotFinishActivity = false; } Loading Loading @@ -204,9 +182,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); extras.putInt(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, sensorId); extras.putLong(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge); extras.putBoolean( BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, mBiometricsSuccessfullyAuthenticated); onFaceOrFingerprintPreferenceTreeClick(preference); } catch (IllegalStateException e) { if (retry) { Loading Loading @@ -236,9 +211,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { final Bundle extras = preference.getExtras(); extras.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); extras.putLong(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, challenge); extras.putBoolean( BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, mBiometricsSuccessfullyAuthenticated); onFaceOrFingerprintPreferenceTreeClick(preference); } catch (IllegalStateException e) { if (retry) { Loading Loading @@ -323,8 +295,6 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { } outState.putBoolean(BIOMETRICS_AUTH_REQUESTED, mBiometricsAuthenticationRequested); outState.putBoolean(BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, mBiometricsSuccessfullyAuthenticated); } @Override Loading @@ -342,6 +312,20 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { com.google.android.setupdesign.R.anim.sud_slide_next_out); retryPreferenceKey(mRetryPreferenceKey, mRetryPreferenceExtra); } final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics( getActivity(), mBiometricsAuthenticationRequested, mUserId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { finish(); return; } } else { Log.d(getLogTag(), "Data null or GK PW missing."); finish(); Loading @@ -354,9 +338,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { mRetryPreferenceExtra = null; } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { mBiometricsAuthenticationRequested = false; if (resultCode == RESULT_OK) { mBiometricsSuccessfullyAuthenticated = true; } else { if (resultCode != RESULT_OK) { finish(); } } Loading
src/com/android/settings/biometrics/face/FaceSettings.java +12 −17 Original line number Diff line number Diff line Loading @@ -23,7 +23,6 @@ import static com.android.settings.Utils.isPrivateProfile; import static com.android.settings.biometrics.BiometricEnrollBase.BIOMETRIC_AUTH_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.ENROLL_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT; Loading Loading @@ -98,7 +97,6 @@ public class FaceSettings extends DashboardFragment { private boolean mConfirmingPassword; private boolean mBiometricsAuthenticationRequested; private boolean mBiometricsSuccessfullyAuthenticated; private final FaceSettingsRemoveButtonPreferenceController.Listener mRemovalListener = () -> { Loading Loading @@ -150,8 +148,6 @@ public class FaceSettings extends DashboardFragment { public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putByteArray(KEY_TOKEN, mToken); outState.putBoolean(KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED, mBiometricsSuccessfullyAuthenticated); } @Override Loading @@ -171,8 +167,6 @@ public class FaceSettings extends DashboardFragment { mToken = getIntent().getByteArrayExtra(KEY_TOKEN); mSensorId = getIntent().getIntExtra(BiometricEnrollBase.EXTRA_KEY_SENSOR_ID, -1); mChallenge = getIntent().getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, 0L); mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra( EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false); mUserId = getActivity().getIntent().getIntExtra( Intent.EXTRA_USER_ID, UserHandle.myUserId()); Loading Loading @@ -241,8 +235,6 @@ public class FaceSettings extends DashboardFragment { if (savedInstanceState != null) { mToken = savedInstanceState.getByteArray(KEY_TOKEN); mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean( KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED); } } Loading Loading @@ -288,12 +280,6 @@ public class FaceSettings extends DashboardFragment { Log.e(TAG, "Password not set"); finish(); } } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else { mAttentionController.setToken(mToken); mEnrollController.setToken(mToken); Loading Loading @@ -330,6 +316,17 @@ public class FaceSettings extends DashboardFragment { final boolean hasEnrolled = mFaceManager.hasEnrolledTemplates(mUserId); mEnrollButton.setVisible(!hasEnrolled); mRemoveButton.setVisible(hasEnrolled); final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsAuthenticationRequested, mUserId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { finish(); } } } else if (requestCode == ENROLL_REQUEST) { if (resultCode == RESULT_TIMEOUT) { Loading @@ -338,9 +335,7 @@ public class FaceSettings extends DashboardFragment { } } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { mBiometricsAuthenticationRequested = false; if (resultCode == RESULT_OK) { mBiometricsSuccessfullyAuthenticated = true; } else { if (resultCode != RESULT_OK) { finish(); } } Loading
src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +13 −26 Original line number Diff line number Diff line Loading @@ -239,8 +239,6 @@ public class FingerprintSettings extends SubSettings { "security_settings_fingerprint_footer"; private static final String KEY_BIOMETRICS_AUTHENTICATION_REQUESTED = "biometrics_authentication_requested"; private static final String KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED = "biometrics_successfully_authenticated"; private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000; private static final int MSG_FINGER_AUTH_SUCCESS = 1001; Loading Loading @@ -276,7 +274,6 @@ public class FingerprintSettings extends SubSettings { private byte[] mToken; private boolean mLaunchedConfirm; private boolean mBiometricsAuthenticationRequested; private boolean mBiometricsSuccessfullyAuthenticated; private boolean mHasFirstEnrolled = true; private Drawable mHighlightDrawable; private int mUserId; Loading Loading @@ -451,8 +448,6 @@ public class FingerprintSettings extends SubSettings { ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); mChallenge = activity.getIntent() .getLongExtra(BiometricEnrollBase.EXTRA_KEY_CHALLENGE, -1L); mBiometricsSuccessfullyAuthenticated = getIntent().getBooleanExtra( BiometricEnrollBase.EXTRA_BIOMETRICS_AUTHENTICATED_SUCCESSFULLY, false); mAuthenticateSidecar = (FingerprintAuthenticateSidecar) getFragmentManager().findFragmentByTag(TAG_AUTHENTICATE_SIDECAR); Loading Loading @@ -494,8 +489,6 @@ public class FingerprintSettings extends SubSettings { mIsEnrolling = savedInstanceState.getBoolean(KEY_IS_ENROLLING, mIsEnrolling); mHasFirstEnrolled = savedInstanceState.getBoolean(KEY_HAS_FIRST_ENROLLED, mHasFirstEnrolled); mBiometricsSuccessfullyAuthenticated = savedInstanceState.getBoolean( KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED); mBiometricsAuthenticationRequested = savedInstanceState.getBoolean( KEY_BIOMETRICS_AUTHENTICATION_REQUESTED); } Loading @@ -506,12 +499,6 @@ public class FingerprintSettings extends SubSettings { if (mToken == null) { mLaunchedConfirm = true; launchChooseOrConfirmLock(); } else if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (!mHasFirstEnrolled) { mIsEnrolling = true; addFirstFingerprint(null); Loading Loading @@ -801,14 +788,6 @@ public class FingerprintSettings extends SubSettings { mCalibrator = FeatureFactory.getFeatureFactory().getFingerprintFeatureProvider() .getUdfpsEnrollCalibrator(getActivity().getApplicationContext(), null, null); if (Utils.requestBiometricAuthenticationForMandatoryBiometrics(getActivity(), mBiometricsSuccessfullyAuthenticated, mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } } private void updatePreferences() { Loading Loading @@ -858,8 +837,6 @@ public class FingerprintSettings extends SubSettings { outState.putBoolean(KEY_HAS_FIRST_ENROLLED, mHasFirstEnrolled); outState.putBoolean(KEY_BIOMETRICS_AUTHENTICATION_REQUESTED, mBiometricsAuthenticationRequested); outState.putBoolean(KEY_BIOMETRICS_SUCCESSFULLY_AUTHENTICATED, mBiometricsSuccessfullyAuthenticated); } @Override Loading Loading @@ -1023,6 +1000,18 @@ public class FingerprintSettings extends SubSettings { updateAddPreference(); }); } final Utils.BiometricStatus biometricAuthStatus = Utils.requestBiometricAuthenticationForMandatoryBiometrics( getActivity(), mBiometricsAuthenticationRequested, mUserId); if (biometricAuthStatus == Utils.BiometricStatus.OK) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } else if (biometricAuthStatus != Utils.BiometricStatus.NOT_ACTIVE) { finish(); } } else { Log.d(TAG, "Data null or GK PW missing"); finish(); Loading Loading @@ -1075,9 +1064,7 @@ public class FingerprintSettings extends SubSettings { updateAddPreference(); } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { mBiometricsAuthenticationRequested = false; if (resultCode == RESULT_OK) { mBiometricsSuccessfullyAuthenticated = true; } else { if (resultCode != RESULT_OK) { finish(); } } Loading