Android指紋密碼
使用場景以及方向
- 指紋解鎖,在支持指紋識別的手機中,幾乎每個支持指紋識別芯片的手機都支持指紋解鎖,這也是指紋識別在手機中應用最多的場景了。在此基礎(chǔ)上,有些手機可以支持不同的手指進入不同的桌面,有點類似Windows系統(tǒng)下多賬戶的意思,不同的是,別人根本看不出來。在我們APP開發(fā)中,如用戶的一些操作,例如業(yè)務審批,請假審批,報銷審批等一些需要對操作人員進行身份認證的項目
- 指紋支付,基于指紋識別技術(shù),蘋果、三星、魅族、ZUK等都推出了自家的支付解決方案,在國內(nèi),iPhone的指紋識別已經(jīng)可以支持支付寶、微信支付,三星、魅族也是與支付寶進行合作,ZUK雖然沒有公布具體的合作方,但已經(jīng)指出在為支付寶、微信、財付通等進行調(diào)試。在我們APP開發(fā)中, p2p,消費金融,o2o,管理軟件等項目中涉及到的一些用戶操作,例如訂單確認,指紋付款,指紋還貸,查看薪資等涉及到需要對操作人員進行身份認證,隱私安全類的項目
使用條件
- 手機是否支持指紋識別
- 手機是否錄入了指紋
核心代碼
-
BaseTools工具類,主要同于對是否能使用指紋密碼進行的一些硬件檢測等
//android6.0以及以上的api @RequiresApi(api = Build.VERSION_CODES.M) public static boolean isFinger() { FingerprintManager manager; KeyguardManager mKeyManager; manager = (FingerprintManager) ExApplication.mContext.getSystemService(Context.FINGERPRINT_SERVICE); mKeyManager = (KeyguardManager) ExApplication.mContext.getSystemService(Context.KEYGUARD_SERVICE); //android studio 上,沒有這個會報錯 if (ActivityCompat.checkSelfPermission( ExApplication.mContext, Manifest.permission.USE_FINGERPRINT) != PackageManager.PERMISSION_GRANTED) { return false; } //判斷手機硬件是否支持指紋識別,如果不支持,那么則不能使用與指紋 有關(guān)的所有操作 if (!manager.isHardwareDetected()) { return false; } //判斷 是否開啟鎖屏密碼,可以提示用戶去設置指紋解鎖 if (!mKeyManager.isKeyguardSecure()) { return false; } //判斷是否有指紋錄入,可以提示用戶去設置指紋解鎖 if (!manager.hasEnrolledFingerprints()) { return false; } return true; } -
zhiwen包是對于指紋密碼的封裝,FingerprintUiHelper只用于對指紋密碼業(yè)務的封裝所提供的主要接口
//識別失敗 @Override public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { showError(helpString); } //識別失敗 @Override public void onAuthenticationFailed() { showError(mIcon.getResources().getString( “指紋無法識別。再試一次!”)); } //識別成功 @Override public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) { mErrorTextView.removeCallbacks(mResetErrorTextRunnable); mIcon.setImageResource(R.drawable.ic_fingerprint_success); mErrorTextView.setTextColor( mErrorTextView.getResources().getColor(R.color.success_color, null)); mErrorTextView.setText( mErrorTextView.getResources().getString(R.string.pin_code_fingerprint_success)); mIcon.postDelayed(new Runnable() { @Override public void run() { mCallback.onAuthenticated(); } }, SUCCESS_DELAY_MILLIS); }
注意
- 1.在app開發(fā)中,指紋密碼無法得到任何標識,官方目前只提供指紋校驗成功與失敗的方法
-
2.指紋密碼,不能存儲于自己的服務器,最多可以存儲該用戶是否啟用了指紋密碼識別功能。Screenshot_20180306-133810.png

Screenshot_20180306-133821.png
