gpt4 book ai didi

SDK 上的安卓指纹<23

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:49 24 4
gpt4 key购买 nike

我在 Android 上有一个 minSDK=17 和 targetSDK=23 的项目。我们在这个项目中使用 FingerprintManager 类进行了指纹认证(它是在 SDK23 中添加的)。我们添加了 SDK 版本检查,因此如果 SDK<23,我们将不使用任何与指纹相关的内容。但在较旧的 SDK 版本中,应用程序的行为是不可预测的:在某些版本中,应用程序只是崩溃,而在其他版本中——指纹不起作用(所以,没关系)。

我的问题:

1) minSDK=17 有没有什么好的、易于实现的库,可以识别指纹?2) 如何避免应用程序在 SDK<23 的设备上崩溃?崩溃错误:

E/dalvikvm: Could not find class 'android.hardware.fingerprint.FingerprintManager', referenced from method nl.intratuin.LoginActivity.loginByFingerprint
E/AndroidRuntime: FATAL EXCEPTION: main java.lang.VerifyError:
LoginActivity at java.lang.Class.newInstanceImpl(Native Method)

一些新信息:使用本教程创建了 HelloWorld 指纹项目: http://www.techotopia.com/index.php/An_Android_Fingerprint_Authentication_Tutorial找到了问题的根源:FingerprintDemoActivity->cipherInit:

try {
keyStore.load(null);
SecretKey key = (SecretKey) keyStore.getKey(KEY_NAME,
null);
cipher.init(Cipher.ENCRYPT_MODE, key);
return true;
} catch (KeyPermanentlyInvalidatedException e) {
return false;
} catch (KeyStoreException | CertificateException
| UnrecoverableKeyException | IOException
| NoSuchAlgorithmException | InvalidKeyException e) {
throw new RuntimeException("Failed to init Cipher", e);
}

第一个 catch block 会因我上面提到的错误而破坏整个应用程序。当然,我可以只删除这个catch(这个异常扩展了InvalidKeyException,所以它会被处理),并在任何异常的情况下返回false。有没有更好的方法?

最佳答案

我想,我找到了可接受的解决方案:捕获的不是 KeyPermanentlyInvalidatedException,而是 InvalidKeyException。这样一切都很好。仍然不知道这个异常是如何让整个应用程序崩溃的……

关于SDK 上的安卓指纹<23,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com