Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 046a97ed authored by pastychang's avatar pastychang Committed by Maurice Lam
Browse files

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
parent f574d22f
Loading
Loading
Loading
Loading
+25 −6
Original line number Diff line number Diff line
@@ -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;
+9 −1
Original line number Diff line number Diff line
@@ -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) {
+2 −0
Original line number Diff line number Diff line
@@ -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;
    }