diff options
Diffstat (limited to 'src/com/android')
10 files changed, 103 insertions, 51 deletions
diff --git a/src/com/android/settings/biometrics/BiometricEnrollBase.java b/src/com/android/settings/biometrics/BiometricEnrollBase.java index c23aee659c..308878f2c1 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollBase.java +++ b/src/com/android/settings/biometrics/BiometricEnrollBase.java @@ -36,6 +36,7 @@ import com.android.settings.password.ChooseLockSettingsHelper; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; +import com.google.android.setupcompat.util.WizardManagerHelper; import com.google.android.setupdesign.GlifLayout; /** @@ -120,6 +121,19 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity { initViews(); } + @Override + protected void onStop() { + super.onStop(); + if (!isChangingConfigurations() && shouldFinishWhenBackgrounded()) { + setResult(RESULT_TIMEOUT); + finish(); + } + } + + protected boolean shouldFinishWhenBackgrounded() { + return !WizardManagerHelper.isAnySetupWizard(getIntent()); + } + protected void initViews() { getWindow().setStatusBarColor(Color.TRANSPARENT); } diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index d94686e3f2..d815f57a7e 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -178,6 +178,11 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase } } + @Override + protected boolean shouldFinishWhenBackgrounded() { + return super.shouldFinishWhenBackgrounded() && !mConfirmingCredentials && !mNextClicked; + } + private void updatePasswordQuality() { final int passwordQuality = new ChooseLockSettingsHelper(this).utils() .getActivePasswordQuality(mUserManager.getCredentialOwnerProfile(mUserId)); @@ -243,7 +248,8 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == BIOMETRIC_FIND_SENSOR_REQUEST) { - if (resultCode == RESULT_FINISHED || resultCode == RESULT_SKIP) { + if (resultCode == RESULT_FINISHED || resultCode == RESULT_SKIP + || resultCode == RESULT_TIMEOUT) { setResult(resultCode, data); finish(); return; diff --git a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java index a2460553e2..17a933b425 100644 --- a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java @@ -23,6 +23,8 @@ import android.view.View; import com.android.settings.R; import com.android.settings.password.ChooseLockSettingsHelper; +import com.google.android.setupcompat.util.WizardManagerHelper; + /** * Abstract base activity which handles the actual enrolling for biometrics. */ @@ -58,7 +60,6 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase @Override protected void onStop() { - super.onStop(); if (mSidecar != null) { mSidecar.setListener(null); } @@ -69,6 +70,9 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase getSupportFragmentManager() .beginTransaction().remove(mSidecar).commitAllowingStateLoss(); } + if (!WizardManagerHelper.isAnySetupWizard(getIntent())) { + setResult(RESULT_TIMEOUT); + } finish(); } } diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index e1253c1479..3b84c35e7d 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -16,17 +16,13 @@ package com.android.settings.biometrics.face; -import static android.security.KeyStore.getApplicationContext; - import android.app.settings.SettingsEnums; import android.content.ComponentName; -import android.content.Context; import android.content.Intent; import android.hardware.face.FaceManager; import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; -import android.provider.Settings; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityManager; @@ -173,14 +169,8 @@ public class FaceEnrollEducation extends BiometricEnrollBase { } @Override - protected void onStop() { - super.onStop(); - - if (!isChangingConfigurations() && !WizardManagerHelper.isAnySetupWizard(getIntent()) - && !mNextClicked) { - setResult(RESULT_SKIP); - finish(); - } + protected boolean shouldFinishWhenBackgrounded() { + return super.shouldFinishWhenBackgrounded() && !mNextClicked; } @Override @@ -216,11 +206,13 @@ public class FaceEnrollEducation extends BiometricEnrollBase { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); mResultIntent = data; if (requestCode == BIOMETRIC_FIND_SENSOR_REQUEST) { // If the user finished or skipped enrollment, finish this activity - if (resultCode == RESULT_SKIP || resultCode == RESULT_FINISHED) { - setResult(resultCode); + if (resultCode == RESULT_FINISHED || resultCode == RESULT_SKIP + || resultCode == RESULT_TIMEOUT) { + setResult(resultCode, data); finish(); } } diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index 073c7e65e3..6709a6ab81 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -100,16 +100,6 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { } @Override - protected void onStop() { - super.onStop(); - - if (!isChangingConfigurations() && !mConfirmingCredentials && !mNextClicked - && !WizardManagerHelper.isAnySetupWizard(getIntent())) { - finish(); - } - } - - @Override protected boolean isDisabledByAdmin() { return RestrictedLockUtilsInternal.checkIfKeyguardFeaturesDisabled( this, DevicePolicyManager.KEYGUARD_DISABLE_FACE, mUserId) != null; diff --git a/src/com/android/settings/biometrics/face/FaceSettings.java b/src/com/android/settings/biometrics/face/FaceSettings.java index 5795e65b2b..e1ca4f7bcb 100644 --- a/src/com/android/settings/biometrics/face/FaceSettings.java +++ b/src/com/android/settings/biometrics/face/FaceSettings.java @@ -19,7 +19,9 @@ package com.android.settings.biometrics.face; import static android.app.Activity.RESULT_OK; import static com.android.settings.biometrics.BiometricEnrollBase.CONFIRM_REQUEST; +import static com.android.settings.biometrics.BiometricEnrollBase.ENROLL_REQUEST; import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_FINISHED; +import static com.android.settings.biometrics.BiometricEnrollBase.RESULT_TIMEOUT; import android.app.settings.SettingsEnums; import android.content.Context; @@ -90,6 +92,9 @@ public class FaceSettings extends DashboardFragment { mEnrollButton.setVisible(true); }; + private final FaceSettingsEnrollButtonPreferenceController.Listener mEnrollListener = intent -> + startActivityForResult(intent, ENROLL_REQUEST); + public static boolean isAvailable(Context context) { FaceManager manager = Utils.getFaceManagerOrNull(context); return manager != null && manager.isHardwareDetected(); @@ -230,11 +235,16 @@ public class FaceSettings extends DashboardFragment { } } } + } else if (requestCode == ENROLL_REQUEST) { + if (resultCode == RESULT_TIMEOUT) { + setResult(resultCode, data); + finish(); + } } if (mToken == null) { // Didn't get an authentication, finishing - getActivity().finish(); + finish(); } } @@ -252,7 +262,7 @@ public class FaceSettings extends DashboardFragment { } mToken = null; } - getActivity().finish(); + finish(); } } @@ -277,6 +287,7 @@ public class FaceSettings extends DashboardFragment { mRemoveController.setActivity((SettingsActivity) getActivity()); } else if (controller instanceof FaceSettingsEnrollButtonPreferenceController) { mEnrollController = (FaceSettingsEnrollButtonPreferenceController) controller; + mEnrollController.setListener(mEnrollListener); mEnrollController.setActivity((SettingsActivity) getActivity()); } } diff --git a/src/com/android/settings/biometrics/face/FaceSettingsEnrollButtonPreferenceController.java b/src/com/android/settings/biometrics/face/FaceSettingsEnrollButtonPreferenceController.java index a087ccc78e..e89eca4fc2 100644 --- a/src/com/android/settings/biometrics/face/FaceSettingsEnrollButtonPreferenceController.java +++ b/src/com/android/settings/biometrics/face/FaceSettingsEnrollButtonPreferenceController.java @@ -43,6 +43,7 @@ public class FaceSettingsEnrollButtonPreferenceController extends BasePreference private SettingsActivity mActivity; private Button mButton; private boolean mIsClicked; + private Listener mListener; public FaceSettingsEnrollButtonPreferenceController(Context context) { this(context, KEY); @@ -69,7 +70,11 @@ public class FaceSettingsEnrollButtonPreferenceController extends BasePreference intent.setClassName("com.android.settings", FaceEnrollIntroduction.class.getName()); intent.putExtra(Intent.EXTRA_USER_ID, mUserId); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); - mContext.startActivity(intent); + if (mListener != null) { + mListener.onStartEnrolling(intent); + } else { + mContext.startActivity(intent); + } } @Override @@ -95,4 +100,19 @@ public class FaceSettingsEnrollButtonPreferenceController extends BasePreference public void setActivity(SettingsActivity activity) { mActivity = activity; } + + public void setListener(Listener listener) { + mListener = listener; + } + + /** + * Interface for registering callbacks related to the face enroll preference button. + */ + public interface Listener { + /** + * Called when the user has indicated an intent to begin enrolling a new face. + * @param intent The Intent that should be used to launch face enrollment. + */ + void onStartEnrolling(Intent intent); + } } diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java index e92c967c8f..8194878c07 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java @@ -222,8 +222,8 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling { @Override protected void onStop() { - super.onStop(); stopIconAnimation(); + super.onStop(); } private void animateProgress(int progress) { diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java index 733fb3f03b..95082689bd 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java @@ -115,10 +115,15 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase { @Override protected void onStop() { - super.onStop(); if (mAnimation != null) { mAnimation.pauseAnimation(); } + super.onStop(); + } + + @Override + protected boolean shouldFinishWhenBackgrounded() { + return super.shouldFinishWhenBackgrounded() && !mNextClicked; } @Override @@ -163,26 +168,25 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase { finish(); } } else if (requestCode == ENROLL_REQUEST) { - if (resultCode == RESULT_FINISHED) { - setResult(RESULT_FINISHED); - finish(); - } else if (resultCode == RESULT_SKIP) { - setResult(RESULT_SKIP); - finish(); - } else if (resultCode == RESULT_TIMEOUT) { - setResult(RESULT_TIMEOUT); - finish(); - } else { - FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this); - int enrolled = fpm.getEnrolledFingerprints().size(); - int max = getResources().getInteger( - com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); - if (enrolled >= max) { + switch (resultCode) { + case RESULT_FINISHED: + case RESULT_SKIP: + case RESULT_TIMEOUT: + setResult(resultCode); finish(); - } else { - // We came back from enrolling but it wasn't completed, start again. - startLookingForFingerprint(); - } + break; + default: + FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this); + int enrolled = fpm.getEnrolledFingerprints().size(); + int max = getResources().getInteger( + com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); + if (enrolled >= max) { + finish(); + } else { + // We came back from enrolling but it wasn't completed, start again. + startLookingForFingerprint(); + } + break; } } else { super.onActivityResult(requestCode, resultCode, data); diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java index 68b21f5aef..1a8e481423 100644 --- a/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/biometrics/fingerprint/FingerprintSettings.java @@ -133,6 +133,7 @@ public class FingerprintSettings extends SubSettings { private Drawable mHighlightDrawable; private int mUserId; private CharSequence mFooterTitle; + private boolean mEnrollClicked; private static final String TAG_AUTHENTICATE_SIDECAR = "authenticate_sidecar"; private static final String TAG_REMOVAL_SIDECAR = "removal_sidecar"; @@ -464,6 +465,14 @@ public class FingerprintSettings extends SubSettings { } @Override + public void onStop() { + super.onStop(); + if (!getActivity().isChangingConfigurations() && !mLaunchedConfirm && !mEnrollClicked) { + getActivity().finish(); + } + } + + @Override public void onSaveInstanceState(final Bundle outState) { outState.putByteArray(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); @@ -475,6 +484,7 @@ public class FingerprintSettings extends SubSettings { public boolean onPreferenceTreeClick(Preference pref) { final String key = pref.getKey(); if (KEY_FINGERPRINT_ADD.equals(key)) { + mEnrollClicked = true; Intent intent = new Intent(); intent.setClassName(SETTINGS_PACKAGE_NAME, FingerprintEnrollEnrolling.class.getName()); @@ -564,9 +574,10 @@ public class FingerprintSettings extends SubSettings { } } } else if (requestCode == ADD_FINGERPRINT_REQUEST) { + mEnrollClicked = false; if (resultCode == RESULT_TIMEOUT) { Activity activity = getActivity(); - activity.setResult(RESULT_TIMEOUT); + activity.setResult(resultCode); activity.finish(); } } |