安卓正式引入指纹模块,是在API23版本中,所以本文只针对API23以上的,不对API23以下,各大厂商的各自的Rom指纹做说明.
首先在清单文件中加入指纹权限:
<uses-permission android:name="android.permission.USE_FINGERPRINT" />注:我的studio版本是2.3.0,在使用中 清单文件中有这么一行代码 android:roundIcon="@mipmap/ic_launcher_round" 会导致指纹无法识别到,我删去了这行代码就可以了.如果各位也遇到这种情况 不妨试试.
public class ShuangMianActivity extends BaseActivity { private FingerHelper fingerHelper; private ImageView imageViewPic; private int type = 0; @Override protected int getLayout() { return R.layout.activity_shuang_mian; } @Override protected void initView() { imageViewPic = (ImageView) findViewById(R.id.iv_shuangmianzhiwen_pic); } @Override protected void initData() { initFingerPrint(); } private void initFingerPrint() { fingerPrintUiHelper = new FingerPrintUiHelper(this); fingerPrintUiHelper.startFingerPrintListen(new FingerprintManagerCompat.AuthenticationCallback() { @Override public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result) { Toast.makeText(ShuangMianActivity.this, "指纹识别成功", Toast.LENGTH_SHORT).show(); } @Override public void onAuthenticationFailed() { // Toast.makeText(MainActivity.this, "指纹识别失败", Toast.LENGTH_SHORT).show(); } @Override public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) { Toast.makeText(ShuangMianActivity.this, helpString, Toast.LENGTH_SHORT).show(); } @Override public void onAuthenticationError(int errMsgId, CharSequence errString) { //但多次指纹密码验证错误后,进入此方法;并且,不能短时间内调用指纹验证 Toast.makeText(ShuangMianActivity.this, "您尝试次数过多,请稍后再试", Toast.LENGTH_SHORT).show(); } }); } } import android.app.Activity; import android.support.v4.hardware.fingerprint.FingerprintManagerCompat; import android.support.v4.os.CancellationSignal; public class FingerHelper { private CancellationSignal signal; private FingerprintManagerCompat fingerprintManager; public FingerHelper(Activity activity) { signal = new CancellationSignal(); fingerprintManager = FingerprintManagerCompat.from(activity); } public void startFingerPrintListen(FingerprintManagerCompat.AuthenticationCallback callback) { fingerprintManager.authenticate(null, 0, signal, callback, null); } }