# android 指紋識別并檢測指紋庫是否變更

android API 23時新增的功能,指紋識別

主要類:FingerpringManager

在API28后,F(xiàn)ingerpringManager被遺棄,使用BiometricPrompt,此時授權(quán)識別的彈窗不能自定義,
只能使用官方統(tǒng)一彈窗,只能設(shè)置各個授權(quán)文案。各個開發(fā)商內(nèi)部實(shí)現(xiàn)可能不一致。

通過只是使用指紋識別,直接使用官方api即可,但出于安全或業(yè)務(wù)場景需求,很多都需要去檢測生物庫信息是否變更,
如指紋庫在重新指紋識別前是否發(fā)生變更,這個官方api就沒有提供方法,需要我們自己實(shí)現(xiàn)。

檢測指紋庫是否發(fā)生變更

參考:

通過檢測密鑰查看是否變更(http://www.itdecent.cn/p/dbb1a43cfb21)

在API28以前,指紋庫信息時可以通過反射獲取,獲取的信息有指紋id、groupId、指紋名稱、指紋個數(shù)、設(shè)備id等等,

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    Log.d(TAG, "getFingerPrintInfo: ");
    FingerprintManager fingerprintManager = (FingerprintManager) getCurrentActivity().getSystemService(Context.FINGERPRINT_SERVICE);
    try{
        Class clz = Class.forName("android.hardware.fingerprint.FingerprintManager");
        Method method = clz.getDeclaredMethod("getEnrolledFingerprints", new Class[]{});
        method.setAccessible(true);
        Object obj = method.invoke(fingerprintManager, null);
        if (obj != null) {
            Log.e(TAG, "objStr:" + JsonUtils.toJson(obj));
            List<FingerprintBean> list = (List<FingerprintBean>) JsonUtils.fromJson(objStr, new TypeToken<List<FingerprintBean>>(){}.getType());
        }
    }catch (Exception e) {
        e.printStackTrace();
    }
}

而FingerprintBean是這樣的:


public class FingerprintBean implements Serializable {

    private static final long serialVersionUID = 1L;
    private long mDeviceId;
    private long mFingerId;
    private long mGroupId;
    private String mName;
}

最理想的方式是我們反射獲取到這些指紋庫信息,然后將這些信息保存到本地,每次調(diào)用指紋識別時,獲取當(dāng)前指紋庫信息與之前的指紋庫信息比較,
只有不同即可判定指紋庫信息變更,
但在實(shí)際操作中,發(fā)現(xiàn)在手機(jī)上獲取到的指紋id只是簡單的1、2、3即指紋庫里的排列順序,而指紋名稱是可以隨意更改,groupId、deviceId都為0,
如果使用這些信息去校驗(yàn),錯誤率太高。

還有一種方式即是上面參考鏈接中的,
檢測指紋庫密鑰信息是否變更

但在上面鏈接那種方法中,有幾個問題:
1、增加、刪除指紋無法檢測
2、使用修改指紋的手指識別后才能檢測出修改

于是將反射、密鑰檢測兩者結(jié)合,
先反射獲取指紋庫信息,只是比較指紋庫指紋個數(shù),先判斷指紋個數(shù)是否發(fā)生變更,就可知道指紋庫信息變更了
如果指紋個數(shù)沒有變更,再來校驗(yàn)密鑰是否發(fā)生變化

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容