Launch correct enrollment activity from ChooseLock
Test: no noticable difference when setting up fingeprint work profile Fixes: 130397083 Change-Id: I34be5262cc52052ce25a188f19bbcc13f938ac92
This commit is contained in:
@@ -1562,6 +1562,11 @@
|
|||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:screenOrientation="portrait"/>
|
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"
|
<activity android:name=".biometrics.BiometricEnrollActivity"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:theme="@style/GlifTheme.Light">
|
android:theme="@style/GlifTheme.Light">
|
||||||
|
@@ -20,11 +20,15 @@ import android.app.settings.SettingsEnums;
|
|||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.Bundle;
|
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.face.FaceEnrollIntroduction;
|
||||||
|
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
|
||||||
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.biometrics.fingerprint.SetupFingerprintEnrollIntroduction;
|
||||||
import com.android.settings.core.InstrumentedActivity;
|
import com.android.settings.core.InstrumentedActivity;
|
||||||
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
|
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
|
|
||||||
@@ -36,6 +40,12 @@ import com.google.android.setupcompat.util.WizardManagerHelper;
|
|||||||
*/
|
*/
|
||||||
public class BiometricEnrollActivity extends InstrumentedActivity {
|
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
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
@@ -45,19 +55,43 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
|
|||||||
|
|
||||||
// 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 = 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)) {
|
} else if (pm.hasSystemFeature(PackageManager.FEATURE_FACE)) {
|
||||||
intent = getFaceEnrollIntent();
|
intent = getFaceIntroIntent();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intent != null) {
|
if (intent != null) {
|
||||||
intent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
|
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);
|
startActivity(intent);
|
||||||
}
|
}
|
||||||
finish();
|
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())) {
|
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||||
Intent intent = new Intent(this, SetupFingerprintEnrollIntroduction.class);
|
Intent intent = new Intent(this, SetupFingerprintEnrollIntroduction.class);
|
||||||
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
|
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
|
||||||
@@ -67,7 +101,7 @@ public class BiometricEnrollActivity extends InstrumentedActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Intent getFaceEnrollIntent() {
|
private Intent getFaceIntroIntent() {
|
||||||
Intent intent = new Intent(this, FaceEnrollIntroduction.class);
|
Intent intent = new Intent(this, FaceEnrollIntroduction.class);
|
||||||
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
|
WizardManagerHelper.copyWizardManagerExtras(getIntent(), intent);
|
||||||
return intent;
|
return intent;
|
||||||
|
@@ -150,7 +150,9 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
|
|||||||
if (!mHasPassword) {
|
if (!mHasPassword) {
|
||||||
// No password registered, launch into enrollment wizard.
|
// No password registered, launch into enrollment wizard.
|
||||||
launchChooseLock();
|
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());
|
launchConfirmLock(getConfirmLockTitleResId(), getChallenge());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -66,8 +66,8 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsActivity;
|
import com.android.settings.SettingsActivity;
|
||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.Utils;
|
import com.android.settings.Utils;
|
||||||
|
import com.android.settings.biometrics.BiometricEnrollActivity;
|
||||||
import com.android.settings.biometrics.BiometricEnrollBase;
|
import com.android.settings.biometrics.BiometricEnrollBase;
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollFindSensor;
|
|
||||||
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
|
||||||
import com.android.settings.search.SearchFeatureProvider;
|
import com.android.settings.search.SearchFeatureProvider;
|
||||||
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
|
||||||
@@ -76,7 +76,6 @@ import com.android.settingslib.RestrictedPreference;
|
|||||||
import com.android.settingslib.widget.FooterPreference;
|
import com.android.settingslib.widget.FooterPreference;
|
||||||
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
|
import com.android.settingslib.widget.FooterPreferenceMixinCompat;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class ChooseLockGeneric extends SettingsActivity {
|
public class ChooseLockGeneric extends SettingsActivity {
|
||||||
@@ -141,7 +140,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int CHOOSE_LOCK_REQUEST = 102;
|
static final int CHOOSE_LOCK_REQUEST = 102;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST = 103;
|
static final int CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST = 103;
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
static final int SKIP_FINGERPRINT_REQUEST = 104;
|
static final int SKIP_FINGERPRINT_REQUEST = 104;
|
||||||
|
|
||||||
@@ -366,7 +365,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
startActivityForResult(
|
startActivityForResult(
|
||||||
intent,
|
intent,
|
||||||
mIsSetNewPassword && mHasChallenge
|
mIsSetNewPassword && mHasChallenge
|
||||||
? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
|
? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
|
||||||
: ENABLE_ENCRYPTION_REQUEST);
|
: ENABLE_ENCRYPTION_REQUEST);
|
||||||
} else {
|
} else {
|
||||||
if (mForChangeCredRequiredForBoot) {
|
if (mForChangeCredRequiredForBoot) {
|
||||||
@@ -411,9 +410,9 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (requestCode == CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
|
} else if (requestCode == CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
|
||||||
&& resultCode == BiometricEnrollBase.RESULT_FINISHED) {
|
&& resultCode == BiometricEnrollBase.RESULT_FINISHED) {
|
||||||
Intent intent = getFindSensorIntent(getActivity());
|
Intent intent = getBiometricEnrollIntent(getActivity());
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
intent.putExtras(data.getExtras());
|
intent.putExtras(data.getExtras());
|
||||||
}
|
}
|
||||||
@@ -438,8 +437,11 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Intent getFindSensorIntent(Context context) {
|
protected Intent getBiometricEnrollIntent(Context context) {
|
||||||
return new Intent(context, FingerprintEnrollFindSensor.class);
|
final Intent intent =
|
||||||
|
new Intent(context, BiometricEnrollActivity.InternalActivity.class);
|
||||||
|
intent.putExtra(BiometricEnrollActivity.EXTRA_SKIP_INTRO, true);
|
||||||
|
return intent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -764,7 +766,7 @@ public class ChooseLockGeneric extends SettingsActivity {
|
|||||||
intent.putExtra(EXTRA_CHOOSE_LOCK_GENERIC_EXTRAS, getIntent().getExtras());
|
intent.putExtra(EXTRA_CHOOSE_LOCK_GENERIC_EXTRAS, getIntent().getExtras());
|
||||||
startActivityForResult(intent,
|
startActivityForResult(intent,
|
||||||
mIsSetNewPassword && mHasChallenge
|
mIsSetNewPassword && mHasChallenge
|
||||||
? CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST
|
? CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST
|
||||||
: CHOOSE_LOCK_REQUEST);
|
: CHOOSE_LOCK_REQUEST);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -42,6 +42,7 @@ import com.android.internal.widget.LockPatternUtils;
|
|||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.SetupEncryptionInterstitial;
|
import com.android.settings.SetupEncryptionInterstitial;
|
||||||
import com.android.settings.SetupWizardUtils;
|
import com.android.settings.SetupWizardUtils;
|
||||||
|
import com.android.settings.biometrics.BiometricEnrollActivity;
|
||||||
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
|
import com.android.settings.biometrics.fingerprint.SetupFingerprintEnrollFindSensor;
|
||||||
import com.android.settings.utils.SettingsDividerItemDecoration;
|
import com.android.settings.utils.SettingsDividerItemDecoration;
|
||||||
|
|
||||||
@@ -229,8 +230,8 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Intent getFindSensorIntent(Context context) {
|
protected Intent getBiometricEnrollIntent(Context context) {
|
||||||
final Intent intent = new Intent(context, SetupFingerprintEnrollFindSensor.class);
|
final Intent intent = getBiometricEnrollIntent(context);
|
||||||
SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
|
SetupWizardUtils.copySetupExtras(getActivity().getIntent(), intent);
|
||||||
return intent;
|
return intent;
|
||||||
}
|
}
|
||||||
|
@@ -224,7 +224,7 @@ public class ChooseLockGenericTest {
|
|||||||
initActivity(null);
|
initActivity(null);
|
||||||
|
|
||||||
mFragment.onActivityResult(
|
mFragment.onActivityResult(
|
||||||
ChooseLockGenericFragment.CHOOSE_LOCK_BEFORE_FINGERPRINT_REQUEST,
|
ChooseLockGenericFragment.CHOOSE_LOCK_BEFORE_BIOMETRIC_REQUEST,
|
||||||
BiometricEnrollBase.RESULT_FINISHED, null /* data */);
|
BiometricEnrollBase.RESULT_FINISHED, null /* data */);
|
||||||
|
|
||||||
assertThat(mActivity.isFinishing()).isTrue();
|
assertThat(mActivity.isFinishing()).isTrue();
|
||||||
|
Reference in New Issue
Block a user