diff options
| author | 2019-02-27 13:12:30 -0800 | |
|---|---|---|
| committer | 2019-02-27 13:12:30 -0800 | |
| commit | 9c98582dd6e46ba24823f3bb29a28da3eb8a32df (patch) | |
| tree | d2a8c4178605c99846659a04b5c12122198cf202 | |
| parent | 17c63babb37428750c4d9e0ad132caab8e3e467c (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.java | 11 |
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(() -> { |