项目支持 androidx 或者 support
本项目没有引入任何第三方库,不会对您的项目有任何的代码侵入
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.yangfeng1994:Android-FingerprintVerify:1.0.3'
}
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
// 这个建造者模式,是阶级建造者模式,必须按照顺序可以。
fingerprintAuthenticatedCharacter = FingerprintCharacterStepBuilder
.newBuilder() // 建造一个模型
.setKeystoreAlias("key1")//添加一个密钥别名,不同项目中的,一定不能相同
.setFingerprintCallback(this)// 设置回调
.build();//构建建造者模式
fingerprintAuthenticatedCharacter.show(Activity);//显示指纹验证的弹窗
/**
* 指纹验证成功
*/
@Override
public void onFingerprintSucceed() {
Toast.makeText(this, "指纹验证成功", Toast.LENGTH_SHORT).show();
}
/**
* 指纹验证失败
*/
@Override
public void onFingerprintFailed() {
Toast.makeText(this, "指纹验证失败", Toast.LENGTH_SHORT).show();
}
/**
* 取消验证
*/
@Override
public void onFingerprintCancel() {
Toast.makeText(this, "取消指纹验证", Toast.LENGTH_SHORT).show();
}
/**
* 没有录入指纹或者不支持指纹识别
*/
@Override
public void onNoEnrolledFingerprints() {
Toast.makeText(this, "没有录入指纹锁", Toast.LENGTH_SHORT).show();
}
@Override
public void onNonsupportFingerprint() {
Toast.makeText(this, "不支持指纹识别", Toast.LENGTH_SHORT).show();
}
1. setActivity()设置activity 上下文对象,用来获取密码管理类
2. setKeystoreAlias("") 添加你应用的密码库的别名
3. setUserAuthenticationValidityDurationSeconds(3)// 密码有效时长,秒 ,必须要大于0,等于0时,无限验证,
小于0时 抛异常Caused by: java.lang.IllegalArgumentException: seconds must be -1 or larger
大概意思是, 秒必须大于或等于-1
可是当你填入1的时候,就会抛异常告诉你没有通过用户验证,为了保险,填一个大于0的数字就行了。
android.security.KeyStoreException: Key user not authenticated
4. getKeyStore() 生成解密支付凭证、令牌等的密钥。
5. setAuthenticationScreenCallBack() 设置回调
6. build(); 构建一个CodedLockAuthenticatedStepBuilder 建造者模型对象
7. codedLockAuthenticatedCharacter.isKeyguardSecure() //判断手机是否有密码锁
8. codedLockAuthenticatedCharacter.onValidate();进行密码验证
codedLockAuthenticatedCharacter = CodedLockAuthenticatedStepBuilder
.newBuilder()
.setActivity(MainActivity.this)
.getKeyguardManager()
.setKeystoreAlias("my_key")//可随便填写
.setUserAuthenticationValidityDurationSeconds(3)
.getKeyStore()
.setAuthenticationScreenCallBack(MainActivity.this)
.build();
if (codedLockAuthenticatedCharacter.isKeyguardSecure()) {
codedLockAuthenticatedCharacter.onValidate();
}else{
Toast.makeText(MainActivity.this, "没有设置密码锁", Toast.LENGTH_SHORT).show();
}
/**
密码验证activity跳转回传的结果
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
codedLockAuthenticatedCharacter.onActivityResult(requestCode, resultCode, data);
}
/**
* 密码验证失败
*/
@Override
public void onCodedLockAuthenticationFailed() {
Toast.makeText(this, "密码验证失败", Toast.LENGTH_SHORT).show();
}
/**
* 密码验证成功
*/
@Override
public void onCodedLockAuthenticationSucceed() {
Toast.makeText(this, "密码验证成功", Toast.LENGTH_SHORT).show();
}
/**
* 密码验证取消
*/
@Override
public void onCodedLockAuthenticationCancel() {
Toast.makeText(this, "密码验证取消", Toast.LENGTH_SHORT).show();
}
-keep class com.yf.verify.** {*;}