在 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) {
}