简单版的指纹,唤起系统指纹认证
FingerprintTool fingerprintTool = new FingerprintTool();
if (fingerprintTool.supportFingerprint(cordova.getActivity(), false, false)) {
if (fingerprintTool.isSupportFingerprint(cordova.getActivity())) {
fingerprintTool.startListening(cordova.getActivity());
fingerprintTool.setOnFingerprintSetting(new FingerprintTool.OnFingerprintSetting() {
@Override
public void onFingerprint(Boolean isSucceed) {
if (isSucceed) {
//认证成功
} else {
//认证失败
}
}
@Override
public void onFingerprintDisable(String errString) {
//认证失败
}
});
}
} else {
//认证失败
}
private KeyStore keyStore;
private Cipher cipher;
private String DEFAULT_KEY_NAME = "default_key";
/**
* 判断是否支持指纹识别
*/
public boolean supportFingerprint(Activity mContext,Boolean showMsg,Boolean go2DefaultLoginType){
if (Build.VERSION.SDK_INT < 23) {
if (showMsg){
Toast.makeText(mContext,"您的系统版本过低,不支持指纹功能",Toast.LENGTH_SHORT).show();
}
return false;
}else {
KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class);
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(mContext);
if (!fingerprintManager.isHardwareDetected()) {
if (showMsg) {
Toast.makeText(mContext,"您的手机不支持指纹功能",Toast.LENGTH_SHORT).show();
}
return false;
} else if (!keyguardManager.isKeyguardSecure()) {
if (showMsg) {
if (go2DefaultLoginType){
Toast.makeText(mContext,"您至少需要在系统设置中添加一个指纹",Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(mContext,"您至少需要在系统设置中添加一个指纹",Toast.LENGTH_SHORT).show();
}
}
return false;
} else if (!fingerprintManager.hasEnrolledFingerprints()) {
// 弹出提示框,跳转指纹添加页面
if (showMsg) {
if (go2DefaultLoginType){
}else {
Toast.makeText(mContext,"您至少需要在系统设置中添加一个指纹",Toast.LENGTH_SHORT).show();
}
}
return false;
}
}
return true;
}
/**
* 判断设备是否支持指纹识别
*/
public boolean isSupportFingerprint(Context mContext) {
if (Build.VERSION.SDK_INT < 23) {
return false;
} else {
KeyguardManager keyguardManager = mContext.getSystemService(KeyguardManager.class);
FingerprintManagerCompat fingerprintManager = FingerprintManagerCompat.from(mContext);
if (!fingerprintManager.isHardwareDetected()) {
return false;
} else if (!keyguardManager.isKeyguardSecure()) {
return false;
}
}
return true;
}
@TargetApi(23)
public void initKey() {
try {
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
KeyGenParameterSpec.Builder builder = new KeyGenParameterSpec.Builder(
DEFAULT_KEY_NAME,
KeyProperties.PURPOSE_ENCRYPT
).setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setUserAuthenticationRequired(true)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7);
keyGenerator.init(builder.build());
keyGenerator.generateKey();
} catch (Exception e) {
e.printStackTrace();
}
}
@TargetApi(23)
public Cipher initCipher(){
try {
Key key = keyStore.getKey(DEFAULT_KEY_NAME, null);
cipher = Cipher.getInstance(
KeyProperties.KEY_ALGORITHM_AES + "/"
+ KeyProperties.BLOCK_MODE_CBC + "/"
+ KeyProperties.ENCRYPTION_PADDING_PKCS7
);
cipher.init(Cipher.ENCRYPT_MODE, key);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return cipher;
}
public void startListening(Activity mContext){
FingerprintManagerCompat.from(mContext).authenticate(null, 0, null, new MyCallBackCompat(), null);
}
public class MyCallBackCompat extends FingerprintManagerCompat.AuthenticationCallback{
private static final String TAG = "MyCallBackCompat";
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
super.onAuthenticationError(errMsgId, errString);
if (errMsgId == FingerprintManager.FINGERPRINT_ERROR_CANCELED) {
// 这里可以处理用户主动取消指纹认证的情况
if (onFingerprintSetting != null) {
onFingerprintSetting.onFingerprint(false);
}
}
}
public void onAuthenticationFailed(){
if (onFingerprintSetting != null) {
onFingerprintSetting.onFingerprint(false);
}
}
public void onAuthenticationSucceeded(FingerprintManagerCompat.AuthenticationResult result){
if (onFingerprintSetting != null) {
onFingerprintSetting.onFingerprint(true);
}
}
}
private OnFingerprintSetting onFingerprintSetting;
public void setOnFingerprintSetting(OnFingerprintSetting onFingerprintSetting) {
this.onFingerprintSetting = onFingerprintSetting;
}
public interface OnFingerprintSetting{
void onFingerprint(Boolean isSucceed);
void onFingerprintDisable(String errString);
}
}
————————————————
很简单的工具类,根据自己需求去在工具类中更改