From 2482d434934938f112ee2b2594f13b2831a84ebe Mon Sep 17 00:00:00 2001 From: Joe Bolinger Date: Wed, 9 Jun 2021 10:01:21 -0700 Subject: [PATCH] Delay invoking biometric prompt. Fix: 169323687 Test: manual Change-Id: Iff00caaace97df6da476fd429ebf24bb6b1e14e1 --- .../settings/password/BiometricFragment.java | 20 +++++++++++-------- .../ConfirmDeviceCredentialActivity.java | 11 ---------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java index 7666a3609cc..e4c08e73ff8 100644 --- a/src/com/android/settings/password/BiometricFragment.java +++ b/src/com/android/settings/password/BiometricFragment.java @@ -47,7 +47,6 @@ public class BiometricFragment extends InstrumentedFragment { private int mUserId; // Created/Initialized once and retained - private PromptInfo mPromptInfo; private BiometricPrompt mBiometricPrompt; private CancellationSignal mCancellationSignal; @@ -127,7 +126,7 @@ public class BiometricFragment extends InstrumentedFragment { final Bundle bundle = getArguments(); final PromptInfo promptInfo = bundle.getParcelable(KEY_PROMPT_INFO); - final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(getContext()) + mBiometricPrompt = new BiometricPrompt.Builder(getContext()) .setTitle(promptInfo.getTitle()) .setUseDefaultTitle() // use default title if title is null/empty .setDeviceCredentialAllowed(true) @@ -140,13 +139,19 @@ public class BiometricFragment extends InstrumentedFragment { .setConfirmationRequired(promptInfo.isConfirmationRequested()) .setDisallowBiometricsIfPolicyExists( promptInfo.isDisallowBiometricsIfPolicyExists()) - .setReceiveSystemEvents(true); + .setReceiveSystemEvents(true) + .build(); + } - mBiometricPrompt = builder.build(); - mCancellationSignal = new CancellationSignal(); + @Override + public void onResume() { + super.onResume(); - mBiometricPrompt.authenticateUser(mCancellationSignal, mClientExecutor, - mAuthenticationCallback, mUserId); + if (mCancellationSignal == null) { + mCancellationSignal = new CancellationSignal(); + mBiometricPrompt.authenticateUser(mCancellationSignal, mClientExecutor, + mAuthenticationCallback, mUserId); + } } @Override @@ -154,4 +159,3 @@ public class BiometricFragment extends InstrumentedFragment { return SettingsEnums.BIOMETRIC_FRAGMENT; } } - diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java index 6241cc91cf8..03e83a4f61b 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java @@ -150,17 +150,6 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity { } }; - private String getStringForError(int errorCode) { - switch (errorCode) { - case BiometricConstants.BIOMETRIC_ERROR_USER_CANCELED: - return getString(com.android.internal.R.string.biometric_error_user_canceled); - case BiometricConstants.BIOMETRIC_ERROR_CANCELED: - return getString(com.android.internal.R.string.biometric_error_canceled); - default: - return null; - } - } - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);