Skip to content
This repository was archived by the owner on Feb 2, 2021. It is now read-only.

Commit 1353427

Browse files
committed
Catch rare NPE in marshmallow reprint module.
1 parent 883dbed commit 1353427

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

core/src/main/java/com/github/ajalt/reprint/module/marshmallow/MarshmallowReprintModule.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public boolean hasFingerprintRegistered() {
143143

144144
@Override
145145
public void authenticate(final CancellationSignal cancellationSignal, final AuthenticationListener listener, final boolean restartOnNonFatal) {
146-
fingerprintManager.authenticate(null, 0, cancellationSignal, new FingerprintManagerCompat.AuthenticationCallback() {
146+
final FingerprintManagerCompat.AuthenticationCallback callback = new FingerprintManagerCompat.AuthenticationCallback() {
147147
@Override
148148
public void onAuthenticationError(int errMsgId, CharSequence errString) {
149149
AuthenticationFailureReason failureReason = AuthenticationFailureReason.UNKNOWN;
@@ -187,6 +187,14 @@ public void onAuthenticationFailed() {
187187
listener.onFailure(AuthenticationFailureReason.AUTHENTICATION_FAILED, false,
188188
context.getString(R.string.fingerprint_not_recognized), TAG, FINGERPRINT_AUTHENTICATION_FAILED);
189189
}
190-
}, null);
190+
};
191+
192+
// Occasionally, an NPE will bubble up out of FingerprintManagerCompat.authenticate
193+
try {
194+
fingerprintManager.authenticate(null, 0, cancellationSignal, callback, null);
195+
} catch (NullPointerException e) {
196+
listener.onFailure(AuthenticationFailureReason.UNKNOWN, true,
197+
context.getString(R.string.fingerprint_error_unable_to_process), TAG, FINGERPRINT_ERROR_CANCELED);
198+
}
191199
}
192200
}

0 commit comments

Comments
 (0)