成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

指紋驗(yàn)證登錄開發(fā)流程詳解

安全 應(yīng)用安全
指紋登錄可以實(shí)現(xiàn)應(yīng)用的快捷登錄,在Android6.0谷歌才提供統(tǒng)一指紋SDK接口,今天我們來(lái)介紹下指紋登錄功能.

[[433625]]

前言

指紋登錄可以實(shí)現(xiàn)應(yīng)用的快捷登錄,在Android6.0谷歌才提供統(tǒng)一指紋SDK接口

今天我們來(lái)介紹下指紋登錄功能;

一、app里指紋登錄介紹

指紋識(shí)別是Android6.0以上就開始支持的一個(gè)功能,并且類也不多,主要就是FingerprintManager還有它里面三個(gè)內(nèi)部類(AuthenticationCallback、AuthenticationResult、CryptoObject);

指紋數(shù)據(jù)是在手機(jī)的設(shè)置里面,不是存到自己寫的APP的;

指紋識(shí)別就只能識(shí)別,而不能在APP中錄入指紋,想錄入指紋可以,自己要到手機(jī)設(shè)置里面的指紋功能自己去添加,指紋識(shí)別功能能做的就是把用戶放到感應(yīng)區(qū)的指紋數(shù)據(jù)與手機(jī)設(shè)置里面的已錄入的指紋數(shù)據(jù)進(jìn)行比對(duì),再執(zhí)行成功失敗的回調(diào),僅此而已;

二、指紋登錄步驟詳解

1、申請(qǐng)權(quán)限

Android清單文件中的指紋的權(quán)限是

  1. <uses-permission android:name="android.permission.USE_FINGERPRINT"/> 

2、驗(yàn)證手機(jī)是否支持指紋

  • FingerprintManagerCompat提供了三個(gè)方法:
  • isHardwareDetected() 判斷是否有硬件支持
  • isKeyguardSecure() 判斷是否設(shè)置鎖屏,因?yàn)橐粋€(gè)手機(jī)最少要有兩種登錄方式

hasEnrolledFingerprints() 判斷系統(tǒng)中是否添加至少一個(gè)指紋

  1. /** 
  2. * 判斷是否支持指紋識(shí)別 
  3. */ 
  4. public static boolean supportFingerprint(Context mContext) { 
  5.     if (Build.VERSION.SDK_INT < 23) { 
  6.         Toast.makeText(mContext, "您的系統(tǒng)版本過(guò)低,不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  7.         return false
  8.     } else { 
  9.         KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class); 
  10.         FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(mContext); 
  11.         if (!fingerprintManager.isHardwareDetected()) { 
  12.             Toast.makeText(mContext, "您的系統(tǒng)版本過(guò)低,不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  13.             return false
  14.         } else if (keyguardManager != null && !keyguardManager.isKeyguardSecure()) { 
  15.             Toast.makeText(mContext, "您的手機(jī)不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  16.             return false
  17.         } else if (!fingerprintManager.hasEnrolledFingerprints()) { 
  18.             Toast.makeText(mContext, "您至少需要在系統(tǒng)設(shè)置中添加一個(gè)指紋", Toast.LENGTH_SHORT).show(); 
  19.             return false
  20.         } 
  21.     } 
  22.     return true

3、生成一個(gè)對(duì)稱加密的key

  1. val DEFAULT_KEY_NAME = "default_key" 
  2.  lateinit var keyStore: KeyStore 
  3.    private fun initKey() { 
  4.         keyStore = KeyStore.getInstance("AndroidKeyStore"
  5.         keyStore.load(null
  6.         val keyGenerator = 
  7.             KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore"
  8.         val builder = KeyGenParameterSpec.Builder(DEFAULT_KEY_NAME, 
  9.             KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT) 
  10.             .setBlockModes(KeyProperties.BLOCK_MODE_CBC) 
  11.             .setUserAuthenticationRequired(true
  12.             .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) 
  13.         keyGenerator.init(builder.build()) 
  14.         keyGenerator.generateKey() 
  15.     } 

4、生成一個(gè)Cipher對(duì)象

  1. private fun initCipher(mContext: Context?) { 
  2.         val key = keyStore.getKey(DEFAULT_KEY_NAME, nullas SecretKey 
  3.         val cipher = Cipher.getInstance(KeyProperties.KEY_ALGORITHM_AES + "/" 
  4.                 + KeyProperties.BLOCK_MODE_CBC + "/" 
  5.                 + KeyProperties.ENCRYPTION_PADDING_PKCS7) 
  6.         cipher.init(Cipher.ENCRYPT_MODE, key
  7.     } 

5、開啟指紋驗(yàn)證

  1. private void showFingerPrintDialog(Context context, Cipher cipher) { 
  2.     FingerprintManagerCompat fingerprintManagerCompat = FingerprintManagerCompat.from(context); 
  3.     FingerprintManagerCompat.CryptoObject cryptoObject = new FingerprintManagerCompat.CryptoObject(cipher); 
  4.     CancellationSignal mCancellationSignal = new CancellationSignal(); 
  5.     //識(shí)別過(guò)程中可以手動(dòng)取消指紋識(shí)別 
  6.     //mCancellationSignal.cancel(); 
  7.     fingerprintManagerCompat.authenticate(cryptoObject, 0, mCancellationSignal, new MyCallBack(), null); 

6、指紋驗(yàn)證回調(diào)

  1. public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback { 
  2.    @Override 
  3.    public void onAuthenticationError(int errMsgId, CharSequence errString) { 
  4.        //當(dāng)出現(xiàn)錯(cuò)誤的時(shí)候回調(diào)此函數(shù),比如多次嘗試都失敗了的時(shí)候,errString是錯(cuò)誤信息 
  5.        //一般來(lái)說(shuō)我們都是先判斷一下是不是自己手動(dòng)取消 
  6.        Log.e("TAG""errMsgId=" + errMsgId); 
  7.        if (errMsgId == FingerprintManager.FINGERPRINT_ERROR_LOCKOUT) { 
  8.            Log.e("TAG""" + errString); 
  9.        } 
  10.    } 
  11.    //當(dāng)指紋驗(yàn)證失敗的時(shí)候會(huì)回調(diào)此函數(shù),失敗之后允許多次嘗試,失敗次數(shù)過(guò)多會(huì)停止響應(yīng)一段時(shí)間然后再停止sensor的工作 
  12.    @Override 
  13.    public void onAuthenticationFailed() { 
  14.        //指紋認(rèn)證失敗,請(qǐng)?jiān)僭囈淮?nbsp;
  15.        Log.e("TAG""onAuthenticationFailed"); 
  16.    } 
  17.    @Override 
  18.    public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { 
  19.       //錯(cuò)誤時(shí)提示幫助,比如說(shuō)指紋錯(cuò)誤,我們將顯示在界面上 讓用戶知道情況 
  20.       Log.e("TAG""helpString=" + helpString); 
  21.    } 
  22.    //當(dāng)驗(yàn)證的指紋成功時(shí)會(huì)回調(diào)此函數(shù),然后不再監(jiān)聽指紋sensor 
  23.    @Override 
  24.    public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) { 
  25.        //這里我們可以做取消彈框之類的 
  26.        Log.e("TAG""onAuthenticationSucceeded=" + result.toString()); 
  27.    } 

到此指紋驗(yàn)證登錄流程完了,是不是很簡(jiǎn)單;

總結(jié)

指紋這塊還有很多很多東西等著我們?nèi)W(xué)習(xí),比如加密等;

 

一起學(xué)習(xí)加油;

 

責(zé)任編輯:武曉燕 來(lái)源: Android開發(fā)編程
相關(guān)推薦

2021-03-05 06:39:54

指紋Web識(shí)別

2021-08-20 09:50:41

Web指紋前端

2011-06-28 13:38:15

Arm linux QT

2021-04-27 07:00:08

UbuntuLinux指紋登錄

2011-06-02 11:13:07

2009-10-10 10:55:48

TDD技術(shù)

2021-11-01 17:31:21

Camera2 相機(jī)開發(fā)

2009-12-10 17:37:28

PHP Cookie登

2025-06-09 07:11:56

2020-02-13 12:17:13

VSCodeReact代碼

2018-05-13 16:00:22

主播APP視頻

2015-12-30 10:29:40

Git協(xié)作流程詳解

2013-06-07 09:49:54

Windows 8.1TechEd2013

2010-07-26 13:06:29

telnet登錄設(shè)置

2009-08-20 13:47:57

C#驗(yàn)證輸入方法

2024-12-16 08:10:00

Spring開發(fā)

2023-11-23 14:37:29

2009-08-13 16:28:07

windows2008密碼驗(yàn)證

2011-05-18 13:26:05

MySQL

2017-08-24 11:54:43

Linux日志定時(shí)輪循機(jī)制
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 天堂中文资源在线 | 日本黄色的视频 | 日日操夜夜操视频 | 国产精品自拍一区 | 精品国产青草久久久久96 | 日韩精品一区二区三区在线观看 | 色综合成人网 | 91av视频 | 久久久久久高潮国产精品视 | 国产视频线观看永久免费 | 欧美视频一区二区三区 | 婷婷色网| 黄色一级毛片免费看 | 成人精品免费视频 | 国产综合在线视频 | 成人不卡| 国产精品视频久久久 | 在线观看欧美日韩视频 | 亚洲国产欧美日韩 | 国产一区999 | 九九热精品视频 | 国产婷婷精品av在线 | 国产一区二区自拍 | 成人av电影免费在线观看 | 亚洲电影一区 | 精品国产18久久久久久二百 | 成人av免费 | 欧美在线a | 日韩欧美视频免费在线观看 | 中文字幕亚洲视频 | 国产精品九九九 | 91久色| 国产成人亚洲精品自产在线 | 国产1区2区 | 国产精品视频久久 | 精品产国自在拍 | 亚洲成av人片在线观看无码 | 日本成人午夜影院 | 男女久久久 | www.日日夜夜| 精品一区二区三区四区外站 |