diff --git a/res/values/strings.xml b/res/values/strings.xml index e4abbca62e8..ee47bbf0437 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1018,6 +1018,15 @@ Current screen lock + + Fingerprint + Pattern + + + Fingerprint + PIN + + + Fingerprint + Password + Disabled by administrator, encryption policy, or credential storage diff --git a/src/com/android/settings/ChooseLockGeneric.java b/src/com/android/settings/ChooseLockGeneric.java index 0e6cf3bd415..6461b937003 100644 --- a/src/com/android/settings/ChooseLockGeneric.java +++ b/src/com/android/settings/ChooseLockGeneric.java @@ -300,6 +300,7 @@ public class ChooseLockGeneric extends SettingsActivity { } addPreferencesFromResource(R.xml.security_settings_picker); disableUnusablePreferences(quality, hideDisabledPrefs); + updatePreferenceText(); updateCurrentPreference(); updatePreferenceSummaryIfNeeded(); } else { @@ -307,6 +308,19 @@ public class ChooseLockGeneric extends SettingsActivity { } } + private void updatePreferenceText() { + if (mForFingerprint) { + Preference pattern = findPreference(KEY_UNLOCK_SET_PATTERN); + pattern.setTitle(R.string.fingerprint_unlock_set_unlock_pattern); + + Preference pin = findPreference(KEY_UNLOCK_SET_PIN); + pin.setTitle(R.string.fingerprint_unlock_set_unlock_pin); + + Preference password = findPreference(KEY_UNLOCK_SET_PASSWORD); + password.setTitle(R.string.fingerprint_unlock_set_unlock_password); + } + } + private void updateCurrentPreference() { String currentKey = getKeyForCurrent(); Preference preference = findPreference(currentKey); diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java index beb1a8fd19a..61cecf4e2e2 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollIntroduction.java @@ -18,11 +18,13 @@ package com.android.settings.fingerprint; import android.app.admin.DevicePolicyManager; import android.content.Intent; +import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; import android.os.UserHandle; import android.view.View; import com.android.internal.logging.MetricsLogger; +import com.android.settings.ChooseLockGeneric; import com.android.settings.ChooseLockSettingsHelper; import com.android.settings.HelpUtils; import com.android.settings.R; @@ -32,6 +34,9 @@ import com.android.settings.R; */ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase { + private static final int CHOOSE_LOCK_GENERIC_REQUEST = 1; + private static final int FINGERPRINT_FIND_SENSOR_REQUEST = 2; + private boolean mHasPassword; @Override @@ -41,6 +46,12 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase { setHeaderText(R.string.security_settings_fingerprint_enroll_introduction_title); findViewById(R.id.cancel_button).setOnClickListener(this); findViewById(R.id.learn_more_button).setOnClickListener(this); + final int passwordQuality = new ChooseLockSettingsHelper(this).utils() + .getActivePasswordQuality(UserHandle.myUserId()); + updatePasswordQuality(); + } + + private void updatePasswordQuality() { final int passwordQuality = new ChooseLockSettingsHelper(this).utils() .getActivePasswordQuality(UserHandle.myUserId()); mHasPassword = passwordQuality != DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED; @@ -48,19 +59,37 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase { @Override protected void onNextButtonClick() { - Intent intent; if (!mHasPassword) { // No fingerprints registered, launch into enrollment wizard. - intent = getOnboardIntent(); + launchChooseLock(); } else { // Lock thingy is already set up, launch directly into find sensor step from wizard. - intent = getFindSensorIntent(); + launchFindSensor(null); } - startActivityForResult(intent, 0); } - protected Intent getOnboardIntent() { - return new Intent(this, FingerprintEnrollOnboard.class); + private void launchChooseLock() { + Intent intent = getChooseLockIntent(); + long challenge = getSystemService(FingerprintManager.class).preEnroll(); + intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY, + DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); + intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, true); + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true); + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge); + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_FOR_FINGERPRINT, true); + startActivityForResult(intent, CHOOSE_LOCK_GENERIC_REQUEST); + } + + private void launchFindSensor(byte[] token) { + Intent intent = getFindSensorIntent(); + if (token != null) { + intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, token); + } + startActivityForResult(intent, FINGERPRINT_FIND_SENSOR_REQUEST); + } + + protected Intent getChooseLockIntent() { + return new Intent(this, ChooseLockGeneric.class); } protected Intent getFindSensorIntent() { @@ -70,8 +99,15 @@ public class FingerprintEnrollIntroduction extends FingerprintEnrollBase { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_FINISHED) { - setResult(RESULT_OK); - finish(); + if (requestCode == FINGERPRINT_FIND_SENSOR_REQUEST) { + setResult(RESULT_OK); + finish(); + } else if (requestCode == CHOOSE_LOCK_GENERIC_REQUEST) { + updatePasswordQuality(); + byte[] token = data.getByteArrayExtra( + ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN); + launchFindSensor(token); + } } else { super.onActivityResult(requestCode, resultCode, data); } diff --git a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java index c7e39e5780e..0f0d35fe9cd 100644 --- a/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java +++ b/src/com/android/settings/fingerprint/SetupFingerprintEnrollIntroduction.java @@ -23,6 +23,7 @@ import android.widget.Button; import com.android.internal.logging.MetricsLogger; import com.android.settings.R; +import com.android.settings.SetupChooseLockGeneric; import com.android.settings.SetupWizardUtils; import com.android.setupwizardlib.view.NavigationBar; @@ -30,8 +31,8 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu implements NavigationBar.NavigationBarListener { @Override - protected Intent getOnboardIntent() { - final Intent intent = new Intent(this, SetupFingerprintEnrollOnboard.class); + protected Intent getChooseLockIntent() { + Intent intent = new Intent(this, SetupChooseLockGeneric.class); SetupWizardUtils.copySetupExtras(getIntent(), intent); return intent; }