Merge "Fixes a bug where user couldnt add a new fingerprint"

This commit is contained in:
Udam Saini
2016-01-26 23:29:16 +00:00
committed by Android (Google) Code Review

View File

@@ -37,6 +37,7 @@ import android.hardware.fingerprint.FingerprintManager.RemovalCallback;
import android.os.Bundle; import android.os.Bundle;
import android.os.CancellationSignal; import android.os.CancellationSignal;
import android.os.Handler; import android.os.Handler;
import android.os.UserHandle;
import android.support.v7.preference.Preference; import android.support.v7.preference.Preference;
import android.support.v7.preference.Preference.OnPreferenceChangeListener; import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import android.support.v7.preference.PreferenceGroup; import android.support.v7.preference.PreferenceGroup;
@@ -156,6 +157,7 @@ public class FingerprintSettings extends SubSettings {
private byte[] mToken; private byte[] mToken;
private boolean mLaunchedConfirm; private boolean mLaunchedConfirm;
private Drawable mHighlightDrawable; private Drawable mHighlightDrawable;
private int mUserId;
private AuthenticationCallback mAuthCallback = new AuthenticationCallback() { private AuthenticationCallback mAuthCallback = new AuthenticationCallback() {
@Override @Override
@@ -263,7 +265,7 @@ public class FingerprintSettings extends SubSettings {
if (!mInFingerprintLockout) { if (!mInFingerprintLockout) {
mFingerprintCancel = new CancellationSignal(); mFingerprintCancel = new CancellationSignal();
mFingerprintManager.authenticate(null, mFingerprintCancel, 0 /* flags */, mFingerprintManager.authenticate(null, mFingerprintCancel, 0 /* flags */,
mAuthCallback, null); mAuthCallback, null, mUserId);
} }
} }
@@ -281,6 +283,9 @@ public class FingerprintSettings extends SubSettings {
mLaunchedConfirm = savedInstanceState.getBoolean( mLaunchedConfirm = savedInstanceState.getBoolean(
KEY_LAUNCHED_CONFIRM, false); KEY_LAUNCHED_CONFIRM, false);
} }
mUserId = getActivity().getIntent().getIntExtra(
Intent.EXTRA_USER_ID, UserHandle.myUserId());
Activity activity = getActivity(); Activity activity = getActivity();
mFingerprintManager = (FingerprintManager) activity.getSystemService( mFingerprintManager = (FingerprintManager) activity.getSystemService(
@@ -340,7 +345,7 @@ public class FingerprintSettings extends SubSettings {
private void addFingerprintItemPreferences(PreferenceGroup root) { private void addFingerprintItemPreferences(PreferenceGroup root) {
root.removeAll(); root.removeAll();
final List<Fingerprint> items = mFingerprintManager.getEnrolledFingerprints(); final List<Fingerprint> items = mFingerprintManager.getEnrolledFingerprints(mUserId);
final int fingerprintCount = items.size(); final int fingerprintCount = items.size();
for (int i = 0; i < fingerprintCount; i++) { for (int i = 0; i < fingerprintCount; i++) {
final Fingerprint item = items.get(i); final Fingerprint item = items.get(i);
@@ -365,7 +370,7 @@ public class FingerprintSettings extends SubSettings {
/* Disable preference if too many fingerprints added */ /* Disable preference if too many fingerprints added */
final int max = getContext().getResources().getInteger( final int max = getContext().getResources().getInteger(
com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser); com.android.internal.R.integer.config_fingerprintMaxTemplatesPerUser);
boolean tooMany = mFingerprintManager.getEnrolledFingerprints().size() >= max; boolean tooMany = mFingerprintManager.getEnrolledFingerprints(mUserId).size() >= max;
CharSequence maxSummary = tooMany ? CharSequence maxSummary = tooMany ?
getContext().getString(R.string.fingerprint_add_max, max) : ""; getContext().getString(R.string.fingerprint_add_max, max) : "";
Preference addPreference = findPreference(KEY_FINGERPRINT_ADD); Preference addPreference = findPreference(KEY_FINGERPRINT_ADD);
@@ -410,6 +415,7 @@ public class FingerprintSettings extends SubSettings {
Intent intent = new Intent(); Intent intent = new Intent();
intent.setClassName("com.android.settings", intent.setClassName("com.android.settings",
FingerprintEnrollEnrolling.class.getName()); FingerprintEnrollEnrolling.class.getName());
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken);
startActivityForResult(intent, ADD_FINGERPRINT_REQUEST); startActivityForResult(intent, ADD_FINGERPRINT_REQUEST);
} else if (pref instanceof FingerprintPreference) { } else if (pref instanceof FingerprintPreference) {
@@ -521,13 +527,14 @@ public class FingerprintSettings extends SubSettings {
ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this); ChooseLockSettingsHelper helper = new ChooseLockSettingsHelper(getActivity(), this);
if (!helper.launchConfirmationActivity(CONFIRM_REQUEST, if (!helper.launchConfirmationActivity(CONFIRM_REQUEST,
getString(R.string.security_settings_fingerprint_preference_title), getString(R.string.security_settings_fingerprint_preference_title),
null, null, challenge)) { null, null, challenge, mUserId)) {
intent.setClassName("com.android.settings", ChooseLockGeneric.class.getName()); intent.setClassName("com.android.settings", ChooseLockGeneric.class.getName());
intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY, intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.MINIMUM_QUALITY_KEY,
DevicePolicyManager.PASSWORD_QUALITY_SOMETHING); DevicePolicyManager.PASSWORD_QUALITY_SOMETHING);
intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS, intent.putExtra(ChooseLockGeneric.ChooseLockGenericFragment.HIDE_DISABLED_PREFS,
true); true);
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_HAS_CHALLENGE, true);
intent.putExtra(Intent.EXTRA_USER_ID, mUserId);
intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE, challenge);
startActivityForResult(intent, CHOOSE_LOCK_GENERIC_REQUEST); startActivityForResult(intent, CHOOSE_LOCK_GENERIC_REQUEST);
} }