Loading AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -1562,6 +1562,11 @@ android:exported="false" android:screenOrientation="portrait"/> <!-- Must not be exported --> <activity android:name=".biometrics.BiometricEnrollActivity$InternalActivity" android:exported="false" android:theme="@style/GlifTheme.Light"/> <activity android:name=".biometrics.BiometricEnrollActivity" android:exported="true" android:theme="@style/GlifTheme.Light"> Loading src/com/android/settings/biometrics/BiometricEnrollActivity.java +38 −4 Original line number Diff line number Diff line Loading @@ -20,11 +20,15 @@ import android.app.settings.SettingsEnums; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.UserHandle; import com.android.settings.SetupWizardUtils; import com.android.settings.biometrics.face.FaceEnrollIntroduction; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction; import com.android.settings.core.InstrumentedActivity; import com.android.settings.password.ChooseLockSettingsHelper; import com.google.android.setupcompat.util.WizardManagerHelper; Loading @@ -36,6 +40,12 @@ import com.google.android.setupcompat.util.WizardManagerHelper; */ public class BiometricEnrollActivity extends InstrumentedActivity { private static final String TAG = "BiometricEnrollActivity"; public static final String EXTRA_SKIP_INTRO = "skip_intro"; public static final class InternalActivity extends BiometricEnrollActivity {} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading @@ -45,19 +55,43 @@ public class BiometricEnrollActivity extends InstrumentedActivity { // This logic may have to be modified on devices with multiple biometrics. if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { intent = getFingerprintEnrollIntent(); // ChooseLockGeneric can request to start fingerprint enroll bypassing the intro screen. if (getIntent().getBooleanExtra(EXTRA_SKIP_INTRO, false) && this instanceof InternalActivity) { intent = getFingerprintFindSensorIntent(); } else { intent = getFingerprintIntroIntent(); } } else if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) { intent = getFaceEnrollIntent(); intent = getFaceIntroIntent(); } if (intent != null) { intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); if (this instanceof InternalActivity) { // Propagate challenge and user Id from ChooseLockGeneric. final byte[] token = getIntent() .getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); final int userId = getIntent() .getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); intent.putExtra(Intent.EXTRA_USER_ID, userId); } startActivity(intent); } finish(); } private Intent getFingerprintEnrollIntent() { private Intent getFingerprintFindSensorIntent() { Intent intent = new Intent(this, FingerprintEnrollFindSensor.class); SetupWizardUtils.copySetupExtras(getIntent(), intent); return intent; } private Intent getFingerprintIntroIntent() { if (WizardManagerHelper.isAnySetupWizard(getIntent())) { Intent intent = new Intent(this, SetupFingerprintEnrollIntroduction.class); WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); Loading @@ -67,7 +101,7 @@ public class BiometricEnrollActivity extends InstrumentedActivity { } } private Intent getFaceEnrollIntent() { private Intent getFaceIntroIntent() { Intent intent = new Intent(this, FaceEnrollIntroduction.class); WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); return intent; Loading src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +3 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,9 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase if (!mHasPassword) { // No password registered, launch into enrollment wizard. launchChooseLock(); } else if (!mLaunchedConfirmLock || mToken == null) { } else if (mToken == null) { // It's possible to have a token but mLaunchedConfirmLock == false, since // ChooseLockGeneric can pass us a token. launchConfirmLock(getConfirmLockTitleResId(), getChallenge()); } } Loading src/com/android/settings/password/ChooseLockGeneric.java +11 −9 Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollActivity; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; Loading @@ -76,7 +76,6 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreferenceMixinCompat; import java.util.Arrays; import java.util.List; public class ChooseLockGeneric extends SettingsActivity { Loading Loading @@ -141,7 +140,7 @@ public class ChooseLockGeneric extends SettingsActivity { @VisibleForTesting static final int CHOOSE_LOCK_REQUEST = 102; @VisibleForTesting static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103; static final int CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST = 103; @VisibleForTesting static final int SKIP_FINGERPRINT_REQUEST = 104; Loading Loading @@ -366,7 +365,7 @@ public class ChooseLockGeneric extends SettingsActivity { startActivityForResult( intent, mIsSetNewPassword && mHasChallenge ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST : ENABLE_ENCRYPTION_REQUEST); } else { if (mForChangeCredRequiredForBoot) { Loading Loading @@ -411,9 +410,9 @@ public class ChooseLockGeneric extends SettingsActivity { finish(); } } } else if (requestCode == CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST } else if (requestCode == CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST && resultCode == BiometricEnrollBase.RESULT_FINISHED) { Intent intent = getFindSensorIntent(getActivity()); Intent intent = getBiometricEnrollIntent(getActivity()); if (data != null) { intent.putExtras(data.getExtras()); } Loading @@ -438,8 +437,11 @@ public class ChooseLockGeneric extends SettingsActivity { } } protected Intent getFindSensorIntent(Context context) { return new Intent(context, FingerprintEnrollFindSensor.class); protected Intent getBiometricEnrollIntent(Context context) { final Intent intent = new Intent(context, BiometricEnrollActivity.InternalActivity.class); intent.putExtra(BiometricEnrollActivity.EXTRA_SKIP_INTRO, true); return intent; } @Override Loading Loading @@ -764,7 +766,7 @@ public class ChooseLockGeneric extends SettingsActivity { intent.putExtra(EXTRA_CHOOSE_LOCK_GENERIC_EXTRAS, getIntent().getExtras()); startActivityForResult(intent, mIsSetNewPassword && mHasChallenge ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST : CHOOSE_LOCK_REQUEST); return; } Loading src/com/android/settings/password/SetupChooseLockGeneric.java +3 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.SetupEncryptionInterstitial; import com.android.settings.SetupWizardUtils; import com.android.settings.biometrics.BiometricEnrollActivity; import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor; import com.android.settings.utils.SettingsDividerItemDecoration; Loading Loading @@ -229,8 +230,8 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { } @Override protected Intent getFindSensorIntent(Context context) { final Intent intent = new Intent(context, SetupFingerprintEnrollFindSensor.class); protected Intent getBiometricEnrollIntent(Context context) { final Intent intent = getBiometricEnrollIntent(context); SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); return intent; } Loading Loading
AndroidManifest.xml +5 −0 Original line number Diff line number Diff line Loading @@ -1562,6 +1562,11 @@ android:exported="false" android:screenOrientation="portrait"/> <!-- Must not be exported --> <activity android:name=".biometrics.BiometricEnrollActivity$InternalActivity" android:exported="false" android:theme="@style/GlifTheme.Light"/> <activity android:name=".biometrics.BiometricEnrollActivity" android:exported="true" android:theme="@style/GlifTheme.Light"> Loading
src/com/android/settings/biometrics/BiometricEnrollActivity.java +38 −4 Original line number Diff line number Diff line Loading @@ -20,11 +20,15 @@ import android.app.settings.SettingsEnums; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.UserHandle; import com.android.settings.SetupWizardUtils; import com.android.settings.biometrics.face.FaceEnrollIntroduction; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollIntroduction; import com.android.settings.core.InstrumentedActivity; import com.android.settings.password.ChooseLockSettingsHelper; import com.google.android.setupcompat.util.WizardManagerHelper; Loading @@ -36,6 +40,12 @@ import com.google.android.setupcompat.util.WizardManagerHelper; */ public class BiometricEnrollActivity extends InstrumentedActivity { private static final String TAG = "BiometricEnrollActivity"; public static final String EXTRA_SKIP_INTRO = "skip_intro"; public static final class InternalActivity extends BiometricEnrollActivity {} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Loading @@ -45,19 +55,43 @@ public class BiometricEnrollActivity extends InstrumentedActivity { // This logic may have to be modified on devices with multiple biometrics. if (pm.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { intent = getFingerprintEnrollIntent(); // ChooseLockGeneric can request to start fingerprint enroll bypassing the intro screen. if (getIntent().getBooleanExtra(EXTRA_SKIP_INTRO, false) && this instanceof InternalActivity) { intent = getFingerprintFindSensorIntent(); } else { intent = getFingerprintIntroIntent(); } } else if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) { intent = getFaceEnrollIntent(); intent = getFaceIntroIntent(); } if (intent != null) { intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); if (this instanceof InternalActivity) { // Propagate challenge and user Id from ChooseLockGeneric. final byte[] token = getIntent() .getByteArrayExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); final int userId = getIntent() .getIntExtra(Intent.EXTRA_USER_ID, UserHandle.USER_NULL); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); intent.putExtra(Intent.EXTRA_USER_ID, userId); } startActivity(intent); } finish(); } private Intent getFingerprintEnrollIntent() { private Intent getFingerprintFindSensorIntent() { Intent intent = new Intent(this, FingerprintEnrollFindSensor.class); SetupWizardUtils.copySetupExtras(getIntent(), intent); return intent; } private Intent getFingerprintIntroIntent() { if (WizardManagerHelper.isAnySetupWizard(getIntent())) { Intent intent = new Intent(this, SetupFingerprintEnrollIntroduction.class); WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); Loading @@ -67,7 +101,7 @@ public class BiometricEnrollActivity extends InstrumentedActivity { } } private Intent getFaceEnrollIntent() { private Intent getFaceIntroIntent() { Intent intent = new Intent(this, FaceEnrollIntroduction.class); WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent); return intent; Loading
src/com/android/settings/biometrics/BiometricEnrollIntroduction.java +3 −1 Original line number Diff line number Diff line Loading @@ -150,7 +150,9 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase if (!mHasPassword) { // No password registered, launch into enrollment wizard. launchChooseLock(); } else if (!mLaunchedConfirmLock || mToken == null) { } else if (mToken == null) { // It's possible to have a token but mLaunchedConfirmLock == false, since // ChooseLockGeneric can pass us a token. launchConfirmLock(getConfirmLockTitleResId(), getChallenge()); } } Loading
src/com/android/settings/password/ChooseLockGeneric.java +11 −9 Original line number Diff line number Diff line Loading @@ -66,8 +66,8 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.Utils; import com.android.settings.biometrics.BiometricEnrollActivity; import com.android.settings.biometrics.BiometricEnrollBase; import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor; import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; Loading @@ -76,7 +76,6 @@ import com.android.settingslib.RestrictedPreference; import com.android.settingslib.widget.FooterPreference; import com.android.settingslib.widget.FooterPreferenceMixinCompat; import java.util.Arrays; import java.util.List; public class ChooseLockGeneric extends SettingsActivity { Loading Loading @@ -141,7 +140,7 @@ public class ChooseLockGeneric extends SettingsActivity { @VisibleForTesting static final int CHOOSE_LOCK_REQUEST = 102; @VisibleForTesting static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103; static final int CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST = 103; @VisibleForTesting static final int SKIP_FINGERPRINT_REQUEST = 104; Loading Loading @@ -366,7 +365,7 @@ public class ChooseLockGeneric extends SettingsActivity { startActivityForResult( intent, mIsSetNewPassword && mHasChallenge ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST : ENABLE_ENCRYPTION_REQUEST); } else { if (mForChangeCredRequiredForBoot) { Loading Loading @@ -411,9 +410,9 @@ public class ChooseLockGeneric extends SettingsActivity { finish(); } } } else if (requestCode == CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST } else if (requestCode == CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST && resultCode == BiometricEnrollBase.RESULT_FINISHED) { Intent intent = getFindSensorIntent(getActivity()); Intent intent = getBiometricEnrollIntent(getActivity()); if (data != null) { intent.putExtras(data.getExtras()); } Loading @@ -438,8 +437,11 @@ public class ChooseLockGeneric extends SettingsActivity { } } protected Intent getFindSensorIntent(Context context) { return new Intent(context, FingerprintEnrollFindSensor.class); protected Intent getBiometricEnrollIntent(Context context) { final Intent intent = new Intent(context, BiometricEnrollActivity.InternalActivity.class); intent.putExtra(BiometricEnrollActivity.EXTRA_SKIP_INTRO, true); return intent; } @Override Loading Loading @@ -764,7 +766,7 @@ public class ChooseLockGeneric extends SettingsActivity { intent.putExtra(EXTRA_CHOOSE_LOCK_GENERIC_EXTRAS, getIntent().getExtras()); startActivityForResult(intent, mIsSetNewPassword && mHasChallenge ? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST ? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST : CHOOSE_LOCK_REQUEST); return; } Loading
src/com/android/settings/password/SetupChooseLockGeneric.java +3 −2 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; import com.android.settings.SetupEncryptionInterstitial; import com.android.settings.SetupWizardUtils; import com.android.settings.biometrics.BiometricEnrollActivity; import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor; import com.android.settings.utils.SettingsDividerItemDecoration; Loading Loading @@ -229,8 +230,8 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric { } @Override protected Intent getFindSensorIntent(Context context) { final Intent intent = new Intent(context, SetupFingerprintEnrollFindSensor.class); protected Intent getBiometricEnrollIntent(Context context) { final Intent intent = getBiometricEnrollIntent(context); SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent); return intent; } Loading