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;
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;

View File

@@ -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,8 +201,14 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
}
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);
}
}
@Override
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.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;
}