我面临的问题是,在一些拥有指纹识别器的Android设备上,方法FingerprintManager.hasEnrolledFingerprints()
会返回true,尽管此设备上没有注册指纹。
在尝试生成密钥之后,这会导致崩溃,如下所示:
Caused by: java.lang.IllegalStateException: At least one fingerprint
must be enrolled to create keys requiring user authentication for every use
at android.security.keystore.KeymasterUtils.addUserAuthArgs(KeymasterUtils.java:115) at android.security.keystore.AndroidKeyStoreKeyGeneratorSpi.engineInit(AndroidKeyStoreKeyGeneratorSpi.java:234)
at android.security.keystore.AndroidKeyStoreKeyGeneratorSpi$AES.engineInit(AndroidKeyStoreKeyGeneratorSpi.java:53)
at javax.crypto.KeyGenerator.init(KeyGenerator.java:189)...
在检查指纹是否已注册之前,我检查FingerprintManager.isHardwareDetected()
,因为这是之前问题的根源。在寻找解决方案时,我发现了一些条目,注意到某些仿真器中注意到了这种行为,但没有人提到物理设备。
注意:有问题的设备不在我手中,但通过日志,我可以确认问题是重复出现。
如果有人遇到同样的问题,我会非常感激 任何建议如何解决这个问题。