diff --git a/src/com/android/settings/MainClear.java b/src/com/android/settings/MainClear.java index 9dadcb9600d..ab7a7146329 100644 --- a/src/com/android/settings/MainClear.java +++ b/src/com/android/settings/MainClear.java @@ -188,7 +188,7 @@ public class MainClear extends InstrumentedFragment implements OnGlobalLayoutLis false /* biometricsAuthenticationRequested */, userId)) { Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRICS_REQUEST, - userId); + userId, false /* hideBackground */); return; } } diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java index add5604a617..badcb63791c 100644 --- a/src/com/android/settings/Utils.java +++ b/src/com/android/settings/Utils.java @@ -25,6 +25,7 @@ import static android.text.format.DateUtils.FORMAT_ABBREV_MONTH; import static android.text.format.DateUtils.FORMAT_SHOW_DATE; import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_AUTHENTICATORS; +import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_HIDE_BACKGROUND; import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT; import android.app.ActionBar; @@ -1519,12 +1520,13 @@ public final class Utils extends com.android.settingslib.Utils { * to check if all requirements for mandatory biometrics is satisfied * before launching biometric prompt. * - * @param fragment corresponding fragment of the surface - * @param requestCode for starting the new activity - * @param userId user id for the authentication request + * @param fragment corresponding fragment of the surface + * @param requestCode for starting the new activity + * @param userId user id for the authentication request + * @param hideBackground if the background activity screen needs to be hidden */ public static void launchBiometricPromptForMandatoryBiometrics(@NonNull Fragment fragment, - int requestCode, int userId) { + int requestCode, int userId, boolean hideBackground) { final Intent intent = new Intent(); intent.putExtra(BIOMETRIC_PROMPT_AUTHENTICATORS, BiometricManager.Authenticators.MANDATORY_BIOMETRICS); @@ -1534,6 +1536,7 @@ public final class Utils extends com.android.settingslib.Utils { fragment.getString(R.string.mandatory_biometrics_prompt_description)); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_ALLOW_ANY_USER, true); intent.putExtra(EXTRA_USER_ID, userId); + intent.putExtra(BIOMETRIC_PROMPT_HIDE_BACKGROUND, hideBackground); intent.setClassName(SETTINGS_PACKAGE_NAME, ConfirmDeviceCredentialActivity.InternalActivity.class.getName()); fragment.startActivityForResult(intent, requestCode); diff --git a/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java b/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java index 835f3a87d68..11194ce92dc 100644 --- a/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java +++ b/src/com/android/settings/biometrics/combination/BiometricsSettingsBase.java @@ -147,7 +147,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { mBiometricsAuthenticationRequested, mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, - mUserId); + mUserId, true /* hideBackground */); } updateUnlockPhonePreferenceSummary(); @@ -166,7 +166,7 @@ public abstract class BiometricsSettingsBase extends DashboardFragment { && mGkPwHandle != 0L) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, - mUserId); + mUserId, true /* hideBackground */); } if (!mConfirmCredential) { mDoNotFinishActivity = false; diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index 305d6703cfe..bcd523142be 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -293,7 +293,7 @@ public class FaceSettings extends DashboardFragment { mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, - mUserId); + mUserId, true /* hideBackground */); } else { mAttentionController.setToken(mToken); mEnrollController.setToken(mToken); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 815c08e0de1..9b663a15a5e 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -489,7 +489,7 @@ public class FingerprintSettings extends SubSettings { mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, - mUserId); + mUserId, true /* hideBackground */); } else if (!mHasFirstEnrolled) { mIsEnrolling = true; addFirstFingerprint(null); @@ -783,7 +783,7 @@ public class FingerprintSettings extends SubSettings { mUserId)) { mBiometricsAuthenticationRequested = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, - BIOMETRIC_AUTH_REQUEST, mUserId); + BIOMETRIC_AUTH_REQUEST, mUserId, true /* hideBackground */); } } diff --git a/src/com/android/settings/password/ChooseLockGeneric.java b/src/com/android/settings/password/ChooseLockGeneric.java index d5d079ecf6d..34c0731184e 100644 --- a/src/com/android/settings/password/ChooseLockGeneric.java +++ b/src/com/android/settings/password/ChooseLockGeneric.java @@ -495,7 +495,7 @@ public class ChooseLockGeneric extends SettingsActivity { mBiometricsAuthSuccessful, mWaitingForConfirmation, mUserId)) { mWaitingForConfirmation = true; Utils.launchBiometricPromptForMandatoryBiometrics(this, BIOMETRIC_AUTH_REQUEST, - mUserId); + mUserId, true /* hideBackground */); } } else if (requestCode == BIOMETRIC_AUTH_REQUEST) { if (resultCode == Activity.RESULT_OK) { diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java index c0b3093c2f8..4f355324fc6 100644 --- a/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java +++ b/src/com/android/settings/password/ConfirmDeviceCredentialActivity.java @@ -80,6 +80,8 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity { public static final String BIOMETRIC_PROMPT_AUTHENTICATORS = "biometric_prompt_authenticators"; public static final String BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT = "biometric_prompt_negative_button_text"; + public static final String BIOMETRIC_PROMPT_HIDE_BACKGROUND = + "biometric_prompt_hide_background"; public static class InternalActivity extends ConfirmDeviceCredentialActivity { } @@ -165,15 +167,20 @@ public class ConfirmDeviceCredentialActivity extends FragmentActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); - getWindow().setStatusBarColor(Color.TRANSPARENT); + final Intent intent = getIntent(); + if (intent.getBooleanExtra(BIOMETRIC_PROMPT_HIDE_BACKGROUND, false)) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); + getWindow().setDimAmount(1); + intent.removeExtra(BIOMETRIC_PROMPT_HIDE_BACKGROUND); + } else { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + getWindow().setStatusBarColor(Color.TRANSPARENT); + } mDevicePolicyManager = getSystemService(DevicePolicyManager.class); mUserManager = UserManager.get(this); mTrustManager = getSystemService(TrustManager.class); mLockPatternUtils = new LockPatternUtils(this); - - Intent intent = getIntent(); mContext = this; mCheckDevicePolicyManager = intent .getBooleanExtra(KeyguardManager.EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS, false); diff --git a/tests/robotests/src/com/android/settings/UtilsTest.java b/tests/robotests/src/com/android/settings/UtilsTest.java index b36e9d63e32..2aeb9063b1e 100644 --- a/tests/robotests/src/com/android/settings/UtilsTest.java +++ b/tests/robotests/src/com/android/settings/UtilsTest.java @@ -22,6 +22,7 @@ import static android.hardware.biometrics.SensorProperties.STRENGTH_WEAK; import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_AUTHENTICATORS; +import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_HIDE_BACKGROUND; import static com.android.settings.password.ConfirmDeviceCredentialActivity.BIOMETRIC_PROMPT_NEGATIVE_BUTTON_TEXT; import static com.google.common.truth.Truth.assertThat; @@ -581,7 +582,8 @@ public class UtilsTest { final int requestCode = 1; final ArgumentCaptor intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); - Utils.launchBiometricPromptForMandatoryBiometrics(mFragment, requestCode, USER_ID); + Utils.launchBiometricPromptForMandatoryBiometrics(mFragment, requestCode, USER_ID, + false /* hideBackground */); verify(mFragment).startActivityForResult(intentArgumentCaptor.capture(), eq(requestCode)); @@ -593,6 +595,8 @@ public class UtilsTest { assertThat(intent.getExtra(KeyguardManager.EXTRA_DESCRIPTION)).isNotNull(); assertThat(intent.getBooleanExtra(ChooseLockSettingsHelper.EXTRA_KEY_ALLOW_ANY_USER, false)) .isTrue(); + assertThat(intent.getBooleanExtra(BIOMETRIC_PROMPT_HIDE_BACKGROUND, true)) + .isFalse(); assertThat(intent.getIntExtra(Intent.EXTRA_USER_ID, 0)).isEqualTo(USER_ID); assertThat(intent.getComponent().getPackageName()).isEqualTo(SETTINGS_PACKAGE_NAME); assertThat(intent.getComponent().getClassName()).isEqualTo(