美文网首页优秀案例
Android 指纹笔记

Android 指纹笔记

作者: silencefun | 来源:发表于2018-04-17 21:47 被阅读97次

    Android 指纹笔记 已经躺在 草稿快一年了,还是整理一下,把坑填上。
    FingerprintManagerCompat 是V4 包提供支持 API >=23
    import android.support.v4.hardware.fingerprint.FingerprintManagerCompat;

    指纹的使用都是在验证,大部分是支付,也有些是在登录,或者私密的二次验证。

    以自己写的 私密记事本 锁屏之后再亮屏需要指纹验证的思路:

    首先是大于23,使用官方支持的,否则可能会出现异常,使用反射也能达到要求但是,不合乎规范:

        private FingerprintManagerCompat manager;
    
     oncreat
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    
                // 获取一个FingerPrintManagerCompat的实例
                manager = FingerprintManagerCompat.from(this);
            }
    

    callback

      public class MyCallBack extends FingerprintManagerCompat.AuthenticationCallback {
        private static final String TAG = "MyCallBack";
    
        // 当出现错误的时候回调此函数,比如多次尝试都失败了的时候,errString是错误信息
        @Override
        public void onAuthenticationError(int errMsgId, CharSequence errString) {
            Log.d(TAG, "onAuthenticationError: " + errString);
            if (errString != null)
                loadingDialog.showError(errString.toString(),1);
        }
    
        // 当指纹验证失败的时候会回调此函数,失败之后允许多次尝试,失败次数过多会停止响应一段时间然后再停止sensor的工作
        @Override
        public void onAuthenticationFailed() {
            Log.d(TAG, "onAuthenticationFailed: " + "验证失败");
    //            handler.sendMessageDelayed(new Message(), 1000 * 30);
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (mycall != null)
                        manager.authenticate(null, 0, null, mycall, null);
                }
            }, 1000 * 30);
            loadingDialog.showError("验证失败",1);
        }
    
        @Override
        public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
            Log.d(TAG, "onAuthenticationHelp: " + helpString);
            if (helpString != null)
                loadingDialog.showError("验证失败",1);
        }
    
        // 当验证的指纹成功时会回调此函数,然后不再监听指纹sensor
        @Override
        public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult
                                                      result) {
            Log.d(TAG, "onAuthenticationSucceeded: " + "验证成功");
            loadingDialog.show("验证成功", 1);
    
            if (AppContext.getContext().isLocked) {
                AppContext.getContext().isLocked = false;
                AppContext.getContext().removeActivity(VolidateActivity.this);
                VolidateActivity.this.finish();
            } else DeviceUtil.startActivity(context, MainActivity.class);
        }
    
    }
    

    相关文章

      网友评论

        本文标题:Android 指纹笔记

        本文链接:https://www.haomeiwen.com/subject/gmvibxtx.html