Fixes a bug where user couldnt add a new fingerprint
Short term fix as there seems to be more user related that need to be fixed in here (renaming/deleting fingerprint) in the fingerprint manager bug:26799512 Change-Id: I5a5d63b0682095a31eeb4cdf07322a3129b0f343
This commit is contained in:
@@ -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;
|
||||||
@@ -153,6 +154,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
|
||||||
@@ -260,7 +262,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,6 +280,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(
|
||||||
@@ -341,7 +346,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);
|
||||||
@@ -366,7 +371,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);
|
||||||
@@ -411,6 +416,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) {
|
||||||
@@ -522,13 +528,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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user