Skip to content

Commit

Permalink
Merge pull request #2715 from dimagi/dv/fingerprint_options
Browse files Browse the repository at this point in the history
Not showing the "Other Options" button on the fingerprint unlock dialog when it is shown during ConnectID registration.
  • Loading branch information
OrangeAndGreen committed Sep 28, 2023
2 parents 8745a99 + 4f85b89 commit e1a4462
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,9 @@ public void startAccountRecoveryWorkflow() {

public void performFingerprintUnlock() {
attemptingFingerprint = true;
BiometricsHelper.authenticateFingerprint(this, biometricManager, biometricPromptCallbacks);
boolean allowOtherOptions = BiometricsHelper.isPinConfigured(this, biometricManager) ||
allowPassword;
BiometricsHelper.authenticateFingerprint(this, biometricManager, allowOtherOptions, biometricPromptCallbacks);
}

public void performPasswordUnlock() {
Expand All @@ -118,7 +120,8 @@ public void onAuthenticationError(int errorCode,
super.onAuthenticationError(errorCode, errString);
if (attemptingFingerprint) {
attemptingFingerprint = false;
if (!BiometricsHelper.isPinConfigured(context, biometricManager)) {
if (!BiometricsHelper.isPinConfigured(context, biometricManager) &&
allowPassword) {
//Automatically try password, it's the only option
performPasswordUnlock();
} else {
Expand Down
16 changes: 11 additions & 5 deletions app/src/org/commcare/utils/BiometricsHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,19 +47,25 @@ public static boolean configureFingerprint(Activity activity) {
return configureBiometric(activity, StrongBiometric);
}

public static void authenticateFingerprint(FragmentActivity activity, BiometricManager biometricManager,
public static void authenticateFingerprint(FragmentActivity activity,
BiometricManager biometricManager,
boolean allowExtraOptions,
BiometricPrompt.AuthenticationCallback biometricPromptCallback) {
if (BiometricsHelper.isFingerprintConfigured(activity, biometricManager)) {
BiometricPrompt prompt = new BiometricPrompt(activity,
ContextCompat.getMainExecutor(activity),
biometricPromptCallback);

prompt.authenticate(new BiometricPrompt.PromptInfo.Builder()
BiometricPrompt.PromptInfo.Builder builder = new BiometricPrompt.PromptInfo.Builder()
.setTitle(activity.getString(R.string.connect_unlock_fingerprint_title))
.setSubtitle(activity.getString(R.string.connect_unlock_fingerprint_message))
.setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_STRONG)
.setNegativeButtonText(activity.getString(R.string.connect_unlock_other_options))
.build());
.setAllowedAuthenticators(BiometricManager.Authenticators.BIOMETRIC_STRONG);

if(allowExtraOptions) {
builder.setNegativeButtonText(activity.getString(R.string.connect_unlock_other_options));
}

prompt.authenticate(builder.build());
}
}

Expand Down

0 comments on commit e1a4462

Please sign in to comment.