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