From cfb087632c15319780f19c19d53234f09d42928e Mon Sep 17 00:00:00 2001 From: Joshua McCloskey Date: Mon, 22 Jul 2024 18:32:33 +0000 Subject: [PATCH] Fix settings crash for non-fingerpirnt devices Test: Verified that Settings does not crash on non-fingerprint devices Flag: EXEMPT bugfix Fixes: b/350635316 Change-Id: Ia6be6672cf8f8d84b2503fdb305a0217224a864d --- .../fingerprint2/BiometricsEnvironment.kt | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt b/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt index 215692ab0e1..9bc920a96ba 100644 --- a/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt +++ b/src/com/android/settings/biometrics/fingerprint2/BiometricsEnvironment.kt @@ -16,7 +16,9 @@ package com.android.settings.biometrics.fingerprint2 +import android.content.pm.PackageManager import android.hardware.fingerprint.FingerprintManager +import android.os.ServiceManager.ServiceNotFoundException import android.view.MotionEvent import android.view.accessibility.AccessibilityManager import androidx.fragment.app.FragmentActivity @@ -74,8 +76,15 @@ class BiometricsEnvironment(context: SettingsApplication) : ViewModelStoreOwner private val backgroundDispatcher = executorService.asCoroutineDispatcher() private val applicationScope = MainScope() private val gateKeeperPasswordProvider = GatekeeperPasswordProvider(LockPatternUtils(context)) - private val fingerprintManager = - context.getSystemService(FragmentActivity.FINGERPRINT_SERVICE) as FingerprintManager? + private val fingerprintManager = try { + if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { + context.getSystemService(FragmentActivity.FINGERPRINT_SERVICE) as FingerprintManager? + } else { + null + } + } catch (exception: ServiceNotFoundException){ + null + } private val fingerprintSensorRepository: FingerprintSensorRepository = FingerprintSensorRepositoryImpl(fingerprintManager, backgroundDispatcher, applicationScope)