在 Android 应用程序中添加指纹扫描仪
Android 支持 Android 6.0(Marshmallow)
SDK 23 中的指纹 api
要在你的应用中使用此功能,请先在清单中添加 USE_FINGERPRINT 权限。
<uses-permission
android:name="android.permission.USE_FINGERPRINT" />
这里的程序要遵循
首先,你需要使用 KeyGenerator 在 Android 密钥库中创建对称密钥,该密钥只能在用户使用指纹进行身份验证并传递 KeyGenParameterSpec 后才能使用。
KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_EC, "AndroidKeyStore");
keyPairGenerator.initialize(
new KeyGenParameterSpec.Builder(KEY_NAME,
KeyProperties.PURPOSE_SIGN)
.setDigests(KeyProperties.DIGEST_SHA256)
.setAlgorithmParameterSpec(new ECGenParameterSpec("secp256r1"))
.setUserAuthenticationRequired(true)
.build());
keyPairGenerator.generateKeyPair();
通过将 KeyGenParameterSpec.Builder.setUserAuthenticationRequired 设置为 true,只有在用户对其进行身份验证(包括使用用户指纹进行身份验证)后才允许使用该密钥。
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PublicKey publicKey =
keyStore.getCertificate(MainActivity.KEY_NAME).getPublicKey();
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
PrivateKey key = (PrivateKey) keyStore.getKey(KEY_NAME, null);
然后通过使用创建的对称密钥初始化的密码调用 FingerprintManager.authenticate,开始在指纹传感器上监听指纹。或者,你可以作为身份验证者回退到服务器端验证的密码。
从 fingerprintManger.class
创建并初始化 FingerprintManger
getContext().getSystemService(FingerprintManager.class)
要验证使用 FingerprintManger
api 并使用创建子类
FingerprintManager.AuthenticationCallback
并覆盖方法
onAuthenticationError
onAuthenticationHelp
onAuthenticationSucceeded
onAuthenticationFailed
开始
要开始使用 crypto,请使用 fingerPrint 事件调用 authenticate 方法
fingerprintManager
.authenticate(cryptoObject, mCancellationSignal, 0 , this, null);
取消
停止持续扫描电话
android.os.CancellationSignal;
验证指纹(或密码)后,将调用 FingerprintManager.AuthenticationCallback#
onAuthenticationSucceeded()
回调。
@Override
public void onAuthenticationSucceeded(AuthenticationResult result) {
}