How to get user ID or info in onAuthenticationSucceeded method for android fingerprint

836 Views Asked by At

I am implementing an android fingerprint authentication. I want to know which user, who has registered in device before, is authenticating. Is there any information about the user, who has registered and is valid for the device, in the FingerprintManager.AuthenticationResult argument in onAuthenticationSucceeded method?!

I am using this sample.

this is my class, which is implementing FingerprintManager.AuthenticationCallback:

public class FingerprintUiHelper extends FingerprintManager.AuthenticationCallback {

private static final long ERROR_TIMEOUT_MILLIS = 1600;
private static final long SUCCESS_DELAY_MILLIS = 1300;

private final FingerprintManager mFingerprintManager;
private final ImageView mIcon;
private final TextView mErrorTextView;
private final Callback mCallback;
private CancellationSignal mCancellationSignal;

private boolean mSelfCancelled;

/**
 * Constructor for {@link FingerprintUiHelper}.
 */
FingerprintUiHelper(FingerprintManager fingerprintManager,
        ImageView icon, TextView errorTextView, Callback callback) {
    mFingerprintManager = fingerprintManager;
    mIcon = icon;
    mErrorTextView = errorTextView;
    mCallback = callback;
}

public boolean isFingerprintAuthAvailable() {
    // The line below prevents the false positive inspection from Android Studio
    // noinspection ResourceType
    return mFingerprintManager.isHardwareDetected()
            && mFingerprintManager.hasEnrolledFingerprints();
}

public void startListening(FingerprintManager.CryptoObject cryptoObject) {
    if (!isFingerprintAuthAvailable()) {
        return;
    }
    mCancellationSignal = new CancellationSignal();
    mSelfCancelled = false;
    // The line below prevents the false positive inspection from Android Studio
    // noinspection ResourceType
    mFingerprintManager
            .authenticate(cryptoObject, mCancellationSignal, 0 /* flags */, this, null);
    mIcon.setImageResource(R.drawable.ic_fp_40px);
}

public void stopListening() {
    if (mCancellationSignal != null) {
        mSelfCancelled = true;
        mCancellationSignal.cancel();
        mCancellationSignal = null;
    }
}

@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
    if (!mSelfCancelled) {
        showError(errString);
        mIcon.postDelayed(new Runnable() {
            @Override
            public void run() {
                mCallback.onError();
            }
        }, ERROR_TIMEOUT_MILLIS);
    }
}

@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
    showError(helpString);
}

@Override
public void onAuthenticationFailed() {
    showError(mIcon.getResources().getString(
            R.string.fingerprint_not_recognized));
}

@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
    mErrorTextView.removeCallbacks(mResetErrorTextRunnable);
    mIcon.setImageResource(R.drawable.ic_fingerprint_success);
    mErrorTextView.setTextColor(
            mErrorTextView.getResources().getColor(R.color.success_color, null));
    mErrorTextView.setText(
            mErrorTextView.getResources().getString(R.string.fingerprint_success));
    mIcon.postDelayed(new Runnable() {
        @Override
        public void run() {
            mCallback.onAuthenticated();
        }
    }, SUCCESS_DELAY_MILLIS);
}

private void showError(CharSequence error) {
    mIcon.setImageResource(R.drawable.ic_fingerprint_error);
    mErrorTextView.setText(error);
    mErrorTextView.setTextColor(
            mErrorTextView.getResources().getColor(R.color.warning_color, null));
    mErrorTextView.removeCallbacks(mResetErrorTextRunnable);
    mErrorTextView.postDelayed(mResetErrorTextRunnable, ERROR_TIMEOUT_MILLIS);
}

private Runnable mResetErrorTextRunnable = new Runnable() {
    @Override
    public void run() {
        mErrorTextView.setTextColor(
                mErrorTextView.getResources().getColor(R.color.hint_color, null));
        mErrorTextView.setText(
                mErrorTextView.getResources().getString(R.string.fingerprint_hint));
        mIcon.setImageResource(R.drawable.ic_fp_40px);
    }
};

public interface Callback {

    void onAuthenticated();

    void onError();
}
}
0

There are 0 best solutions below