Android开发:如何获取设备支持的生物识别类型?
获取设备支持的生物识别类型实现方案
在BIOMETRIC_SUCCESS分支中,你可以借助KeyguardManager和PackageManager来获取具体的生物识别类型,以下是完整实现代码:
val biometricManager = BiometricManager.from(this) when (biometricManager.canAuthenticate()) { BiometricManager.BIOMETRIC_SUCCESS -> { val keyguardManager = getSystemService(KeyguardManager::class.java) val packageManager = packageManager // 先确认设备已设置锁屏安全(生物识别依赖锁屏) if (keyguardManager.isDeviceSecure) { val supportedBiometrics = mutableListOf<String>() // 检查是否支持指纹识别 if (packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)) { supportedBiometrics.add("指纹识别") } // 检查是否支持面部识别(Android 10+ 官方支持) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q && packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)) { supportedBiometrics.add("面部识别") } // 检查是否支持虹膜识别(Android 9+ 官方支持) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && packageManager.hasSystemFeature(PackageManager.FEATURE_IRIS)) { supportedBiometrics.add("虹膜识别") } // 处理结果,比如显示给用户或做业务逻辑判断 if (supportedBiometrics.isNotEmpty()) { val biometricTypes = supportedBiometrics.joinToString("、") println("设备支持的生物识别类型:$biometricTypes") } } } // 其他分支可按需处理,比如BIOMETRIC_ERROR_NO_HARDWARE、BIOMETRIC_ERROR_HW_UNAVAILABLE等 }
代码说明
KeyguardManager.isDeviceSecure:判断设备是否设置了锁屏密码或生物识别,生物识别验证必须依赖设备的安全锁屏设置才能正常工作。PackageManager.hasSystemFeature:通过系统特性常量检测具体的生物识别硬件:FEATURE_FINGERPRINT:检测指纹识别硬件(Android 6.0+ 支持)FEATURE_FACE:检测面部识别硬件(Android 10.0+ 官方提供标准支持)FEATURE_IRIS:检测虹膜识别硬件(Android 9.0+ 官方提供标准支持)
注:部分厂商可能在更早Android版本就支持面部/虹膜识别,但官方API从上述版本开始提供统一检测方式,建议按版本判断后再检查特性,避免兼容性问题。
内容的提问来源于stack exchange,提问作者Imesh Madushanka
相关产品推荐
相关产品推荐

