From 046a97eddeaeacdaaf86c8346c55371bad053deb Mon Sep 17 00:00:00 2001 From: pastychang Date: Thu, 7 Mar 2019 11:27:31 +0800 Subject: [PATCH] Rewire BiometricEnrollActivity to setup pages When running in setup flow: - If fingerprint enrollment is desired, go to SetupFingerprintEnrollIntroduction - Makes sure WizardManagerHelper.copyWizardManagerExtras is called to propagate the extras from the incoming intent, propagating extras like whether we are in initial / deferred setup flow, theme, etc. - Forward the result code in BiometricEnrollActivity using FLAG_ACTIVITY_FORWARD_RESULT Bug: 120797018 Test: Manual Change-Id: Ibc0ecc035141d62339f5f664346ed108570e0905 --- .../biometrics/BiometricEnrollActivity.java | 31 +++++++++++++++---- .../BiometricEnrollIntroduction.java | 10 +++++- .../face/FaceEnrollIntroduction.java | 2 ++ 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/biometrics/BiometricEnrollActivity.java b/src/com/android/settings/biometrics/BiometricEnrollActivity.java index b650c6c46cb..39a7a80f701 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollActivity.java +++ b/src/com/android/settings/biometrics/BiometricEnrollActivity.java @@ -16,8 +16,6 @@ package com.android.settings.biometrics; -import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME; - import android.app.settings.SettingsEnums; import android.content.Intent; import android.content.pm.PackageManager; @@ -25,8 +23,11 @@ import android.os.Bundle; import com.android.settings.biometrics.face.FaceEnrollIntroduction; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; +import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction; import com.android.settings.core.InstrumentedActivity; +import com.google.android.setupcompat.util.WizardManagerHelper; + /** * Trampoline activity launched by the {@code android.settings.BIOMETRIC_ENROLL} action which * shows the user an appropriate enrollment flow depending on the device's biometric hardware. @@ -40,20 +41,38 @@ public class BiometricEnrollActivity extends InstrumentedActivity { super.onCreate(savedInstanceState); final PackageManager pm = getApplicationContext().getPackageManager(); - final Intent intent = new Intent(); + Intent intent; // This logic may have to be modified on devices with multiple biometrics. if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { - intent.setClassName(SETTINGS_PACKAGE_NAME, - FingerprintEnrollIntroduction.class.getName()); + intent = getFingerprintEnrollIntent(); } else if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) { - intent.setClassName(SETTINGS_PACKAGE_NAME, FaceEnrollIntroduction.class.getName()); + intent = getFaceEnrollIntent(); + } else { + intent = new Intent(); } + intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(intent); finish(); } + private Intent getFingerprintEnrollIntent() { + if (WizardManagerHelper.isAnySetupWizard(getIntent())) { + Intent intent = new Intent(this, SetupFingerprintEnrollIntroduction.class); + WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); + return intent; + } else { + return new Intent(this, FingerprintEnrollIntroduction.class); + } + } + + private Intent getFaceEnrollIntent() { + Intent intent = new Intent(this, FaceEnrollIntroduction.class); + WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); + return intent; + } + @Override public int getMetricsCategory() { return SettingsEnums.BIOMETRIC_ENROLL_ACTIVITY; diff --git a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java index e8cf8095c57..d7f2c97d8cb 100644 --- a/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/BiometricEnrollIntroduction.java @@ -27,8 +27,10 @@ import android.widget.TextView; import com.android.settings.R; import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockSettingsHelper; +import com.android.settings.password.SetupChooseLockGeneric; import com.google.android.setupcompat.template.FooterButton; +import com.google.android.setupcompat.util.WizardManagerHelper; import com.google.android.setupdesign.span.LinkSpan; /** @@ -199,7 +201,13 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase } protected Intent getChooseLockIntent() { - return new Intent(this, ChooseLockGeneric.class); + if (WizardManagerHelper.isAnySetupWizard(getIntent())) { + Intent intent = new Intent(this, SetupChooseLockGeneric.class); + WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); + return intent; + } else { + return new Intent(this, ChooseLockGeneric.class); + } } @Override diff --git a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java index e45817d50a4..8d4c82ec6dc 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollIntroduction.java @@ -36,6 +36,7 @@ import com.android.settingslib.RestrictedLockUtilsInternal; 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.span.LinkSpan; public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { @@ -166,6 +167,7 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { intent.setClass(this, FaceEnrollEnrolling.class); } intent.putExtra(EXTRA_KEY_REQUIRE_DIVERSITY, mSwitchDiversity.isChecked()); + WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); return intent; }