如何在Android模拟器中禁用指纹传感器?我在设置窗口或config.ini文件中找不到任何选项。
默认情况下,SDK 23以上的所有模拟器都具有指纹支持。我想在SDK 23上面测试我的流程,没有指纹支持。
答案 0 :(得分:3)
使用常规方法无法实现。但是有非常规的。
您无法禁用的原因是,它的存在不是通过Android Framework而是通过作为所有其他传感器的底层Linux OS来控制的。因此,如果您的系统具有该传感器的驱动程序-Android会认为该传感器存在。
因此,指纹传感器的存在取决于驾驶员。解决方案现在很容易。如果没有驱动程序-将没有传感器。您要做的就是禁用(与OS断开连接)驱动程序。为此,您将需要
我不完全确定系统中指纹驱动程序的显示方式(我曾使用其他传感器进行过描述),但是经过很长时间的谷歌搜索和外推后,我认为它可能被称为 fpc 。
因此,您可能需要在系统驱动器文件夹中进行搜索-类似于
/sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../
该文件夹中应有四个文件-uevent
,bind
,而我们将需要unbind
和deviceName
。
现在取消绑定传感器-echo deviceName > /sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../unbind
现在系统将认为系统中没有指纹传感器...直到下一次重新启动。
我当时在真实设备上以及其他传感器上执行此操作,但我认为方法应该几乎相同。
灵感来自here
希望有帮助。
答案 1 :(得分:2)
在模拟器设置中没有明确的方法可以覆盖它。一种解决方法是扩展BiometricPrompt(API 28+)或FingerprintManagerCompat(27及以下)并提供您自己的实现。对于FingerprintManagerCompat的扩展,您可以将isHardwareDetected()覆盖为类似
override fun isHardwareDetected() {
if (System.getProperty("os.arch") == "mips64") {
return false;
}
return super.isHardwareDetected()
}
对于BiometricPrompt,您将以类似的方式覆盖BiometricPrompt.authenticate()以返回常量BIOMETRIC_ERROR_HW_UNAVAILABLE
。