diff --git a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java index 2daffdec110..fa65afe7448 100644 --- a/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java +++ b/src/com/android/settings/fingerprint/FingerprintEnrollSidecar.java @@ -78,7 +78,7 @@ public class FingerprintEnrollSidecar extends Fragment { mEnrollmentSteps = -1; mEnrollmentCancel = new CancellationSignal(); getActivity().getSystemService(FingerprintManager.class).enroll(mToken, mEnrollmentCancel, - mEnrollmentCallback, 0); + 0 /* flags */, mEnrollmentCallback); mEnrolling = true; } diff --git a/src/com/android/settings/fingerprint/FingerprintSettings.java b/src/com/android/settings/fingerprint/FingerprintSettings.java index a0ccb24d06d..5cbab66bbdd 100644 --- a/src/com/android/settings/fingerprint/FingerprintSettings.java +++ b/src/com/android/settings/fingerprint/FingerprintSettings.java @@ -117,6 +117,8 @@ public class FingerprintSettings extends SubSettings { private static final int MSG_REFRESH_FINGERPRINT_TEMPLATES = 1000; private static final int MSG_FINGER_AUTH_SUCCESS = 1001; private static final int MSG_FINGER_AUTH_FAIL = 1002; + private static final int MSG_FINGER_AUTH_ERROR = 1003; + private static final int MSG_FINGER_AUTH_HELP = 1004; private static final int CONFIRM_REQUEST = 101; private static final int CHOOSE_LOCK_GENERIC_REQUEST = 102; @@ -146,22 +148,14 @@ public class FingerprintSettings extends SubSettings { @Override public void onAuthenticationError(int errMsgId, CharSequence errString) { - // get activity will be null on a screen rotation - final Activity activity = getActivity(); - if (activity != null) { - Toast.makeText(activity, errString, Toast.LENGTH_SHORT); - } - if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) { - retryFingerprint(false); - } + mHandler.obtainMessage(MSG_FINGER_AUTH_ERROR, errMsgId, 0, errString) + .sendToTarget(); } @Override public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { - final Activity activity = getActivity(); - if (activity != null) { - Toast.makeText(activity, helpString, Toast.LENGTH_SHORT); - } + mHandler.obtainMessage(MSG_FINGER_AUTH_HELP, helpMsgId, 0, helpString) + .sendToTarget(); } }; private RemovalCallback mRemoveCallback = new RemovalCallback() { @@ -187,12 +181,36 @@ public class FingerprintSettings extends SubSettings { removeFingerprintPreference(msg.arg1); break; case MSG_FINGER_AUTH_SUCCESS: + mFingerprintCancel = null; highlightFingerprintItem(msg.arg1); retryFingerprint(true); break; case MSG_FINGER_AUTH_FAIL: + mFingerprintCancel = null; retryFingerprint(true); break; + case MSG_FINGER_AUTH_ERROR: { + mFingerprintCancel = null; + // get activity will be null on a screen rotation + final Activity activity = getActivity(); + if (activity != null) { + CharSequence errString = (CharSequence) msg.obj; + Toast.makeText(activity, errString , Toast.LENGTH_SHORT); + } + final int errMsgId = msg.arg1; + if (errMsgId != FingerprintManager.FINGERPRINT_ERROR_CANCELED) { + retryFingerprint(false); + } + } + break; + case MSG_FINGER_AUTH_HELP: { + final Activity activity = getActivity(); + if (activity != null) { + CharSequence helpString = (CharSequence) msg.obj; + Toast.makeText(activity, helpString , Toast.LENGTH_SHORT); + } + } + break; } }; }; @@ -208,9 +226,10 @@ public class FingerprintSettings extends SubSettings { if (resetAttempts) { mMaxFingerprintAttempts = 0; } - if (mMaxFingerprintAttempts < MAX_RETRY_ATTEMPTS) { + if (mMaxFingerprintAttempts < MAX_RETRY_ATTEMPTS && mFingerprintCancel == null) { mFingerprintCancel = new CancellationSignal(); - mFingerprintManager.authenticate(null, mFingerprintCancel, mAuthCallback, 0); + mFingerprintManager.authenticate(null, mFingerprintCancel, 0 /* flags */, + mAuthCallback, null); } mMaxFingerprintAttempts++; } @@ -351,7 +370,6 @@ public class FingerprintSettings extends SubSettings { intent.setClassName("com.android.settings", FingerprintEnrollEnrolling.class.getName()); intent.putExtra(ChooseLockSettingsHelper.EXTRA_KEY_CHALLENGE_TOKEN, mToken); - stopFingerprint(); startActivityForResult(intent, ADD_FINGERPRINT_REQUEST); } else if (pref instanceof FingerprintPreference) { FingerprintPreference fpref = (FingerprintPreference) pref; diff --git a/src/com/android/settings/fingerprint/FingerprintUiHelper.java b/src/com/android/settings/fingerprint/FingerprintUiHelper.java index 6ae76aad50d..10c0fe69387 100644 --- a/src/com/android/settings/fingerprint/FingerprintUiHelper.java +++ b/src/com/android/settings/fingerprint/FingerprintUiHelper.java @@ -51,7 +51,7 @@ public class FingerprintUiHelper extends FingerprintManager.AuthenticationCallba public void startListening() { if (mFingerprintManager.getEnrolledFingerprints().size() > 0) { mCancellationSignal = new CancellationSignal(); - mFingerprintManager.authenticate(null, mCancellationSignal, this, 0 /* flags */); + mFingerprintManager.authenticate(null, mCancellationSignal, 0 /* flags */, this, null); setFingerprintIconVisibility(true); mIcon.setImageResource(R.drawable.ic_fingerprint); }