我的问题:
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块会因为上面提到的错误而导致整个应用程序崩溃。当然,我可以删除这个catch块(这个异常扩展了InvalidKeyException,所以它将被处理),并在任何异常情况下返回false。有没有更好的方法?