禁用指纹传感器-Android仿真器

问题描述 投票:18回答:2

如何在Android仿真器中禁用指纹传感器?我在设置窗口或config.ini文件中找不到任何选项。

默认情况下,SDK 23之上的所有仿真器均具有指纹支持。我想在不支持指纹的情况下在上述SDK 23中测试我的流程。

android android-emulator android-fingerprint-api
2个回答
2
投票

不可能用常规方法来实现。但是有非常规的。

您无法禁用的原因是,它的存在不是通过Android Framework而是通过作为所有其他传感器的底层Linux OS进行管理的。因此,如果您的系统具有该传感器的驱动程序-Android将认为该传感器存在。

因此指纹传感器的存在取决于驾驶员。解决方案现在很容易。如果没有驱动程序-将没有传感器。您要做的就是禁用(与OS断开连接)驱动程序。为此,您需要

  • root
  • 安装了adb shell或某些终端应用程序(su或其他)

我不确定是否在系统中描绘了指纹驱动程序(我正在使用其他传感器进行描绘),但是经过很长时间的谷歌搜索和使用外推后,我认为它可能被称为类似[[fpc。

所以您可能要在系统驱动器文件夹中搜索-类似于/sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../

在文件夹中应该有四个文件-ueventbind,而我们将需要unbinddeviceName

现在解除绑定传感器-echo deviceName > /sys/bus/(platform/spi/blablabla/something)/drivers/fpc.../unbind

现在系统将认为系统中没有指纹传感器,直到下一次重新引导。

我当时在真实设备上以及其他传感器上执行此操作,但我认为方法应该几乎相同。

灵感来自here

希望有帮助。


0
投票
在仿真器设置中没有明确的方法可以覆盖它。一种解决方法是扩展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
© www.soinside.com 2019 - 2024. All rights reserved.