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
This commit is contained in:
pastychang
2019-03-07 11:27:31 +08:00
committed by Maurice Lam
parent f574d22f23
commit 046a97edde
3 changed files with 36 additions and 7 deletions

View File

@@ -16,8 +16,6 @@
package com.android.settings.biometrics; package com.android.settings.biometrics;
import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; 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.face.FaceEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction;
import com.android.settings.core.InstrumentedActivity; 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 * 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. * 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); super.onCreate(savedInstanceState);
final PackageManager pm = getApplicationContext().getPackageManager(); final PackageManager pm = getApplicationContext().getPackageManager();
final Intent intent = new Intent(); Intent intent;
// This logic may have to be modified on devices with multiple biometrics. // This logic may have to be modified on devices with multiple biometrics.
if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) {
intent.setClassName(SETTINGS_PACKAGE_NAME, intent = getFingerprintEnrollIntent();
FingerprintEnrollIntroduction.class.getName());
} else if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) { } 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); startActivity(intent);
finish(); 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 @Override
public int getMetricsCategory() { public int getMetricsCategory() {
return SettingsEnums.BIOMETRIC_ENROLL_ACTIVITY; return SettingsEnums.BIOMETRIC_ENROLL_ACTIVITY;

View File

@@ -27,8 +27,10 @@ import android.widget.TextView;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.password.ChooseLockGeneric; import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper; import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settings.password.SetupChooseLockGeneric;
import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.span.LinkSpan; import com.google.android.setupdesign.span.LinkSpan;
/** /**
@@ -199,8 +201,14 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
} }
protected Intent getChooseLockIntent() { protected Intent getChooseLockIntent() {
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
Intent intent = new Intent(this, SetupChooseLockGeneric.class);
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
return intent;
} else {
return new Intent(this, ChooseLockGeneric.class); return new Intent(this, ChooseLockGeneric.class);
} }
}
@Override @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) { protected void onActivityResult(int requestCode, int resultCode, Intent data) {

View File

@@ -36,6 +36,7 @@ import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterBarMixin;
import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.template.FooterButton;
import com.google.android.setupcompat.util.WizardManagerHelper;
import com.google.android.setupdesign.span.LinkSpan; import com.google.android.setupdesign.span.LinkSpan;
public class FaceEnrollIntroduction extends BiometricEnrollIntroduction { public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
@@ -166,6 +167,7 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
intent.setClass(this, FaceEnrollEnrolling.class); intent.setClass(this, FaceEnrollEnrolling.class);
} }
intent.putExtra(EXTRA_KEY_REQUIRE_DIVERSITY, mSwitchDiversity.isChecked()); intent.putExtra(EXTRA_KEY_REQUIRE_DIVERSITY, mSwitchDiversity.isChecked());
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
return intent; return intent;
} }