package com.amaze.filemanager.utils;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.CancellationSignal;
import android.support.annotation.RequiresApi;
import android.support.v4.app.ActivityCompat;
import com.afollestad.materialdialogs.MaterialDialog;
import com.amaze.filemanager.adapters.RecyclerAdapter;
/**
* Created by vishal on 15/4/17.
*/
@RequiresApi(api = Build.VERSION_CODES.M)
public class FingerprintHandler extends FingerprintManager.AuthenticationCallback {
private Context context;
private RecyclerAdapter.DecryptButtonCallbackInterface decryptButtonCallbackInterface;
private Intent decryptIntent;
private MaterialDialog materialDialog;
// Constructor
public FingerprintHandler(Context mContext, Intent intent, MaterialDialog materialDialog,
RecyclerAdapter.DecryptButtonCallbackInterface decryptButtonCallbackInterface) {
context = mContext;
this.decryptIntent = intent;
this.materialDialog = materialDialog;
this.decryptButtonCallbackInterface = decryptButtonCallbackInterface;
}
@RequiresApi(api = Build.VERSION_CODES.M)
public void authenticate(FingerprintManager manager, FingerprintManager.CryptoObject cryptoObject) {
CancellationSignal cancellationSignal = new CancellationSignal();
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.USE_FINGERPRINT) !=
PackageManager.PERMISSION_GRANTED) {
return;
}
manager.authenticate(cryptoObject, cancellationSignal, 0, this, null);
}
@Override
public void onAuthenticationError(int errMsgId, CharSequence errString) {
}
@Override
public void onAuthenticationHelp(int helpMsgId, CharSequence helpString) {
}
@Override
public void onAuthenticationFailed() {
materialDialog.cancel();
decryptButtonCallbackInterface.failed();
}
@Override
public void onAuthenticationSucceeded(FingerprintManager.AuthenticationResult result) {
materialDialog.cancel();
decryptButtonCallbackInterface.confirm(decryptIntent);
}
}