禁用指纹传感器 - Android模拟器

27

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

默认情况下,所有SDK 23以上的模拟器都支持指纹功能。我想在不支持指纹的SDK 23以上版本中测试我的流程。


12
他可能想在没有指纹传感器的设备上进行测试,以测试后备方案。 - Gabe Sechan
如果是这样的话,那将是一个很好的信息可以放在问题中。 - Mike 'Pomax' Kamermans
1
正如GabeSechan所说,我想测试回退。 - Ponsuyambu
3
明白了吗?我需要测试一下当设备中没有指纹传感器时,一个库的行为表现,但是在模拟器上我无法禁用它。 - giroxiii
1
你找到任何答案了吗? - Conscript
2个回答

4

使用传统方法无法实现。但有非常规方法可用。

您不能禁用指纹识别的原因是,它的存在不是由Android框架管理的,而是由底层Linux操作系统管理,就像所有其他传感器一样。因此,如果系统有这个传感器的驱动程序 - Android将认为该传感器存在。

因此,指纹识别传感器的存在取决于驱动程序。现在解决方案很简单。如果没有驱动程序 - 就没有传感器存在。你所要做的就是禁用(从操作系统中断开)驱动程序。为此,您需要:

  • 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

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

我是在真实设备上并使用其他传感器进行操作的,但我认为该方法应该基本相同。

灵感来自这里

希望这有所帮助。


我执行了"ls -dla /sys/bus//drivers/",但没有发现fpc。fpc1020在Qualcomm内核中。Android模拟器应该使用goldfish内核。你知道偶然间在android模拟器28中使用的指纹驱动程序名称吗? - logcat
抱歉,伙计,不行。我想你可以找到它,但问题是这个时间是否合理。也许找一个没有指纹扫描仪的手机会更好/更容易/更快? - Pavlo Ostasha

3
在模拟器设置中没有清晰的方法来覆盖它。解决方法是扩展 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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接