From a104d290de12c7d1bd5bacb16670b135654e9e55 Mon Sep 17 00:00:00 2001 From: joshmccloskey Date: Mon, 15 Apr 2019 20:46:50 -0700 Subject: [PATCH] Updated ConfirmDeviceCredential strings Test: Verified with BiometricPromptdemo that pin/pattern/pass show up correctly. Fixes: 129797243 Change-Id: Ib075d6742f7e2ad03e491132ae9506dce67558fc --- res/values/strings.xml | 8 +++- .../settings/password/BiometricFragment.java | 52 +++++++++++++++++----- 2 files changed, 46 insertions(+), 14 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index da1c158b36..276f28ce0b 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3964,8 +3964,12 @@ Loading\u2026 - - Use alternate method + + Use PIN + + Use pattern + + Use password diff --git a/src/com/android/settings/password/BiometricFragment.java b/src/com/android/settings/password/BiometricFragment.java index 7f0907181e..bd5a10de46 100644 --- a/src/com/android/settings/password/BiometricFragment.java +++ b/src/com/android/settings/password/BiometricFragment.java @@ -17,6 +17,7 @@ package com.android.settings.password; import android.app.Activity; +import android.app.admin.DevicePolicyManager; import android.app.settings.SettingsEnums; import android.content.DialogInterface; import android.hardware.biometrics.BiometricConstants; @@ -32,8 +33,10 @@ import android.util.Log; import androidx.annotation.NonNull; +import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.core.InstrumentedFragment; +import com.android.settings.overlay.FeatureFactory; import java.util.concurrent.Executor; @@ -137,18 +140,43 @@ public class BiometricFragment extends InstrumentedFragment { setRetainInstance(true); mBundle = getArguments(); - mBiometricPrompt = new BiometricPrompt.Builder(getContext()) - .setTitle(mBundle.getString(BiometricPrompt.KEY_TITLE)) - .setUseDefaultTitle() // use default title if title is null/empty - .setFromConfirmDeviceCredential() - .setSubtitle(mBundle.getString(BiometricPrompt.KEY_SUBTITLE)) - .setDescription(mBundle.getString(BiometricPrompt.KEY_DESCRIPTION)) - .setConfirmationRequired( - mBundle.getBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true)) - .setNegativeButton(getResources().getString( - R.string.confirm_device_credential_use_alternate_method), - mClientExecutor, mNegativeButtonListener) - .build(); + final BiometricPrompt.Builder builder = new BiometricPrompt.Builder(getContext()) + .setTitle(mBundle.getString(BiometricPrompt.KEY_TITLE)) + .setUseDefaultTitle() // use default title if title is null/empty + .setFromConfirmDeviceCredential() + .setSubtitle(mBundle.getString(BiometricPrompt.KEY_SUBTITLE)) + .setDescription(mBundle.getString(BiometricPrompt.KEY_DESCRIPTION)) + .setConfirmationRequired( + mBundle.getBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true)); + + final LockPatternUtils lockPatternUtils = FeatureFactory.getFactory( + getContext()) + .getSecurityFeatureProvider() + .getLockPatternUtils(getContext()); + + switch (lockPatternUtils.getKeyguardStoredPasswordQuality(mUserId)) { + case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING: + builder.setNegativeButton(getResources().getString( + R.string.confirm_device_credential_pattern), + mClientExecutor, mNegativeButtonListener); + break; + case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC: + case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX: + builder.setNegativeButton(getResources().getString( + R.string.confirm_device_credential_pin), + mClientExecutor, mNegativeButtonListener); + break; + case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC: + case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC: + case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX: + case DevicePolicyManager.PASSWORD_QUALITY_MANAGED: + builder.setNegativeButton(getResources().getString( + R.string.confirm_device_credential_password), + mClientExecutor, mNegativeButtonListener); + break; + } + + mBiometricPrompt = builder.build(); mCancellationSignal = new CancellationSignal(); // TODO: CC doesn't use crypto for now -- 2.11.0