private static final String KEY_SUBTITLE = "subtitle";
private static final String KEY_DESCRIPTION = "description";
private static final String KEY_NEGATIVE_TEXT = "negative_text";
+ private static final String KEY_REQUIRE_CONFIRMATION = "require_confirmation";
// Re-set by the application. Should be done upon orientation changes, etc
private Executor mClientExecutor;
.setDescription(mPromptInfo.getDescription())
.setNegativeButton(mPromptInfo.getNegativeButtonText(), mClientExecutor,
mNegativeButtonListener)
+ .setRequireConfirmation(mPromptInfo.getRequireConfirmation())
.build();
mCancellationSignal = new CancellationSignal();
return mBundle.getCharSequence(KEY_NEGATIVE_TEXT);
}
+ public boolean getRequireConfirmation() {
+ return mBundle.getBoolean(KEY_REQUIRE_CONFIRMATION);
+ }
+
public static class Builder {
private final Bundle mBundle = new Bundle();
return this;
}
+ public Builder setRequireConfirmation(boolean requireConfirmation) {
+ mBundle.putBoolean(KEY_REQUIRE_CONFIRMATION, requireConfirmation);
+ return this;
+ }
+
public PromptInfo build() {
return new PromptInfo(mBundle);
}
Intent intent = getIntent();
mTitle = intent.getStringExtra(KeyguardManager.EXTRA_TITLE);
mDetails = intent.getStringExtra(KeyguardManager.EXTRA_DESCRIPTION);
+
+ final boolean requireConfirmation =
+ !intent.getBooleanExtra(KeyguardManager.EXTRA_USE_IMPLICIT, true);
+
String alternateButton = intent.getStringExtra(
KeyguardManager.EXTRA_ALTERNATE_BUTTON_LABEL);
boolean frp = KeyguardManager.ACTION_CONFIRM_FRP_CREDENTIAL.equals(intent.getAction());
&& !lockPatternUtils.isSeparateProfileChallengeEnabled(mUserId)) {
mCredentialMode = CREDENTIAL_MANAGED;
if (isBiometricAllowed(effectiveUserId)) {
- showBiometricPrompt();
+ showBiometricPrompt(requireConfirmation);
launchedBiometric = true;
} else {
showConfirmCredentials();
if (isBiometricAllowed(effectiveUserId)) {
// Don't need to check if biometrics / pin/pattern/pass are enrolled. It will go to
// onAuthenticationError and do the right thing automatically.
- showBiometricPrompt();
+ showBiometricPrompt(requireConfirmation);
launchedBiometric = true;
} else {
showConfirmCredentials();
&& !isBiometricDisabledByAdmin(effectiveUserId);
}
- private void showBiometricPrompt() {
+ private void showBiometricPrompt(boolean requireConfirmation) {
mBiometricManager.setActiveUser(mUserId);
mBiometricFragment = (BiometricFragment) getSupportFragmentManager()
.setSubtitle(mDetails)
.setNegativeButtonText(getResources()
.getString(R.string.confirm_device_credential_use_alternate_method))
+ .setRequireConfirmation(requireConfirmation)
.build();
mBiometricFragment = BiometricFragment.newInstance(info);
newFragment = true;