2018-03-05

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

相關(guān)閱讀更多精彩內(nèi)容

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