summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Kevin Chyn <kchyn@google.com> 2019-02-27 13:12:30 -0800
committer Kevin Chyn <kchyn@google.com> 2019-02-27 13:12:30 -0800
commit9c98582dd6e46ba24823f3bb29a28da3eb8a32df (patch)
treed2a8c4178605c99846659a04b5c12122198cf202
parent17c63babb37428750c4d9e0ad132caab8e3e467c (diff)
Check for hardware before authenticating
On devices with no hardware, the service is null. We need to return the correct error in that case. Fixes: 126392276 Test: Builds Change-Id: I184bd6afce71bf36b659286cd7dd6aa17d490657
-rw-r--r--core/java/android/hardware/biometrics/BiometricPrompt.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java
index baf972b26573..8629210c2a7b 100644
--- a/core/java/android/hardware/biometrics/BiometricPrompt.java
+++ b/core/java/android/hardware/biometrics/BiometricPrompt.java
@@ -616,8 +616,15 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
mExecutor = executor;
mAuthenticationCallback = callback;
final long sessionId = crypto != null ? crypto.getOpId() : 0;
- mService.authenticate(mToken, sessionId, userId, mBiometricServiceReceiver,
- mContext.getOpPackageName(), mBundle);
+ if (BiometricManager.hasBiometrics(mContext)) {
+ mService.authenticate(mToken, sessionId, userId, mBiometricServiceReceiver,
+ mContext.getOpPackageName(), mBundle);
+ } else {
+ mExecutor.execute(() -> {
+ callback.onAuthenticationError(BiometricPrompt.BIOMETRIC_ERROR_HW_NOT_PRESENT,
+ mContext.getString(R.string.biometric_error_hw_unavailable));
+ });
+ }
} catch (RemoteException e) {
Log.e(TAG, "Remote exception while authenticating", e);
mExecutor.execute(() -> {