国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

指紋驗證登錄開發流程詳解

安全 應用安全
指紋登錄可以實現應用的快捷登錄,在Android6.0谷歌才提供統一指紋SDK接口,今天我們來介紹下指紋登錄功能.

[[433625]]

前言

指紋登錄可以實現應用的快捷登錄,在Android6.0谷歌才提供統一指紋SDK接口

今天我們來介紹下指紋登錄功能;

一、app里指紋登錄介紹

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

指紋數據是在手機的設置里面,不是存到自己寫的APP的;

指紋識別就只能識別,而不能在APP中錄入指紋,想錄入指紋可以,自己要到手機設置里面的指紋功能自己去添加,指紋識別功能能做的就是把用戶放到感應區的指紋數據與手機設置里面的已錄入的指紋數據進行比對,再執行成功失敗的回調,僅此而已;

二、指紋登錄步驟詳解

1、申請權限

Android清單文件中的指紋的權限是

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

2、驗證手機是否支持指紋

  • FingerprintManagerCompat提供了三個方法:
  • isHardwareDetected() 判斷是否有硬件支持
  • isKeyguardSecure() 判斷是否設置鎖屏,因為一個手機最少要有兩種登錄方式

hasEnrolledFingerprints() 判斷系統中是否添加至少一個指紋

  1. /** 
  2. * 判斷是否支持指紋識別 
  3. */ 
  4. public static boolean supportFingerprint(Context mContext) { 
  5.     if (Build.VERSION.SDK_INT < 23) { 
  6.         Toast.makeText(mContext, "您的系統版本過低,不支持指紋功能", 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, "您的系統版本過低,不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  13.             return false
  14.         } else if (keyguardManager != null && !keyguardManager.isKeyguardSecure()) { 
  15.             Toast.makeText(mContext, "您的手機不支持指紋功能", Toast.LENGTH_SHORT).show(); 
  16.             return false
  17.         } else if (!fingerprintManager.hasEnrolledFingerprints()) { 
  18.             Toast.makeText(mContext, "您至少需要在系統設置中添加一個指紋", Toast.LENGTH_SHORT).show(); 
  19.             return false
  20.         } 
  21.     } 
  22.     return true

3、生成一個對稱加密的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、生成一個Cipher對象

  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、開啟指紋驗證

  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.     //識別過程中可以手動取消指紋識別 
  6.     //mCancellationSignal.cancel(); 
  7.     fingerprintManagerCompat.authenticate(cryptoObject, 0, mCancellationSignal, new MyCallBack(), null); 

6、指紋驗證回調

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

到此指紋驗證登錄流程完了,是不是很簡單;

總結

指紋這塊還有很多很多東西等著我們去學習,比如加密等;

 

一起學習加油;

 

責任編輯:武曉燕 來源: Android開發編程
相關推薦

2021-03-05 06:39:54

指紋Web識別

2021-08-20 09:50:41

Web指紋前端

2021-04-27 07:00:08

UbuntuLinux指紋登錄

2011-06-28 13:38:15

Arm linux QT

2011-06-02 11:13:07

2009-10-10 10:55:48

TDD技術

2021-11-01 17:31:21

Camera2 相機開發

2009-12-10 17:37:28

PHP Cookie登

2025-06-09 07:11:56

2013-06-07 09:49:54

Windows 8.1TechEd2013

2018-05-13 16:00:22

主播APP視頻

2020-02-13 12:17:13

VSCodeReact代碼

2010-07-26 13:06:29

telnet登錄設置

2015-12-30 10:29:40

Git協作流程詳解

2023-11-23 14:37:29

2009-08-20 13:47:57

C#驗證輸入方法

2024-12-16 08:10:00

Spring開發

2009-08-13 16:28:07

windows2008密碼驗證

2011-05-18 13:26:05

MySQL

2019-01-17 10:46:37

閃存主控芯片
點贊
收藏

51CTO技術棧公眾號

日韩毛片网站| 欧美福利在线播放网址导航| 日本在线观看一区| 黄网在线播放| 亚洲精品精选| 亚洲欧美精品中文字幕在线| 奇米影音第四色| 欧美视频中文字幕| 欧美精品国产一区| 亚洲а∨天堂久久精品喷水| 亚洲精品国产精品国自产| 日韩和的一区二在线| 久久久亚洲精品一区二区三区 | 亚洲一区二区免费看| 少妇熟女一区二区| 综合久久av| 麻豆精品视频在线观看视频| 欧美一区二区视频17c| av日韩在线播放| 久久久三级国产网站| 噼里啪啦国语在线观看免费版高清版| 亚洲你懂的在线视频| 亚洲欧美日韩在线综合| 日韩黄色大片| 99久久久精品视频| 国产综合久久久久久鬼色| 亚洲第一精品福利| 亚洲区小说区图片区qvod| 日韩欧美三级一区二区| 亚洲自拍欧美精品| 国外亚洲成av人片在线观看| 欧美三区美女| 青草视频在线观看视频| 国产精品久久久久久久久快鸭 | 爱高潮www亚洲精品| 精品国产伦一区二区三区观看方式| 国产情侣av自拍| av中文字幕亚洲| 天堂在线第六区| 日本精品视频一区二区| 四虎精品在线观看| 国产日韩一区二区三区| 高清久久久久久| www日韩视频| 欧美三级在线视频| 国产在线看一区| 欧美黄色激情| 午夜精品蜜臀一区二区三区免费 | 欧美精品一区二区三区精品| 国产在线观看一区二区| 国产精品一区电影| 欧美精品一区二区三区久久久竹菊| 成人免费a级片| 成人动漫一区二区| 中文字幕在线视频不卡| 欧美人妖巨大在线| 日本韩国在线视频爽| 性欧美xxxx交| 狠狠色丁香久久婷婷综| 99久久精品免费观看国产| 国产999在线| 风流少妇一区二区| 亚洲老司机网| 成人免费视频网| 色综合色狠狠天天综合色| 久久手机免费观看| 久久综合九色综合97婷婷女人| 久久久久久国产精品一区| 狠狠色丁香久久婷婷综| 毛片.com| 久久中文精品视频| 久久久美女毛片| 9色在线视频| 99re在线观看视频| 亚洲不卡一区二区三区| 欧美美女被草| 懂色av粉嫩av蜜臀av| 亚洲精品菠萝久久久久久久| 麻豆成全视频免费观看在线看| 久热这里只精品99re8久| 欧美日韩亚洲网| 亚洲主播在线| 午夜av在线免费观看| 日韩欧美手机在线| 欧美一级理论性理论a| 韩国精品一区二区| 精品视频一区二区三区在线观看 | 久久久99免费| 免费在线高清av| 中文字幕中文字幕在线中高清免费版| h片在线免费| 偷拍25位美女撒尿视频在线观看| 福利写真视频网站在线| 美女扒开腿让男人桶爽久久软| 岛国av在线网站| 中文字幕日韩在线| 天天影视综合| 国产高清不卡一区| 中文字幕一区二区三区不卡| 91精品综合久久久久久| 欧美精品一区三区| 欧美精品一区二区三区蜜臀| 91香蕉嫩草影院入口| 日本午夜精品一区二区| 成人免费性视频| 情趣视频网站在线免费观看| 国产xxxx振车| 在线影视一区| 天堂成人在线| 草草在线视频| 国产在线一二| 成人亚洲免费| 国产精品嫩模av在线| 青娱乐精品视频| 亚洲一区二区欧美| 日韩视频欧美视频| 韩日视频在线观看| 国产精品12| 91午夜在线观看| 国产一区二区三区不卡在线| 69精品国产久热在线观看| 捆绑紧缚一区二区三区视频| 亚洲线精品一区二区三区| 永久免费毛片在线播放不卡| 国产日产欧美一区二区| 亚洲男男av| 麻豆成人入口| 久久久国产综合精品女国产盗摄| 欧美日韩一本到| 精品国产一区二区三区麻豆小说| 毛片视频免费观看| 91精品高清| 欧美一区二区在线免费观看| 亚洲精品乱码久久久久久蜜桃91| 成人在线日韩| 在线观看日韩| 久久精品国产99久久6| 亚洲精品美国一| 欧美亚洲在线观看| 欧美xxx.com| 视频精品国内| 日韩美女视频19| 国产丝袜一区二区三区| 日韩三级电影免费观看| 欧美调教sm| 乱人伦精品视频在线观看| 欧美色成人综合| 欧美国产综合视频| 在线āv视频| 亚洲一区不卡| 亚洲大胆人体视频| 色视频网站在线观看| 日韩专区视频| 2021久久国产精品不只是精品| 色综合五月天导航| 国产无套粉嫩白浆内谢的出处| 天堂网av成人| 偷拍与自拍一区| 精品国产一区二区三区麻豆小说| 中国av一区| 91成人在线精品| 在线观看免费黄色片| 日韩三级久久| 国产精品久久久久久久久快鸭| 国产精品日韩高清| а√天堂8资源中文在线| 99国产精品国产精品久久| 国产精品xxxx| 秋霞成人影院| 国产在线精品一区二区三区不卡| 久久亚洲电影天堂| 国产精品麻豆一区二区三区| 成人综合一区| 欧美日韩高清影院| 毛片av免费在线观看| 亚洲人成免费| 国产性色av一区二区| yourporn在线观看视频| 久久亚洲精华国产精华液| 国产精品久久亚洲7777| 在线观看的黄色| 欧美日韩一区二区三区在线免费观看| 欧美性天天影院| 亚洲国产精华液| 美女久久一区| 久久国产精品一区二区三区| 深夜成人在线| 日韩免费一区二区三区在线播放| 国产精品亚洲二区在线观看 | 青青草国产精品一区二区| 91精品国产91久久久久久一区二区 | 亚洲视频小说| 美女隐私在线观看| www.亚洲色图| 欧美在线视频二区| 亚洲欧美网站在线观看| 国产精品成人av在线| 欧美日韩另类图片| 色综合天天做天天爱| 欧美zozo|