Move getManager to FingerprintHelper

Partially fixes API level 19 compatibility
This commit is contained in:
Alexander Bakker 2017-12-26 13:25:21 +01:00
parent 1ac3cf9b58
commit 725885d5ad
4 changed files with 28 additions and 18 deletions

View file

@ -24,6 +24,7 @@ import me.impy.aegis.crypto.slots.FingerprintSlot;
import me.impy.aegis.crypto.slots.PasswordSlot; import me.impy.aegis.crypto.slots.PasswordSlot;
import me.impy.aegis.crypto.slots.Slot; import me.impy.aegis.crypto.slots.Slot;
import me.impy.aegis.crypto.slots.SlotCollection; import me.impy.aegis.crypto.slots.SlotCollection;
import me.impy.aegis.helpers.FingerprintHelper;
import me.impy.aegis.helpers.FingerprintUiHelper; import me.impy.aegis.helpers.FingerprintUiHelper;
import me.impy.aegis.helpers.AuthHelper; import me.impy.aegis.helpers.AuthHelper;
@ -50,7 +51,7 @@ public class AuthActivity extends AegisActivity implements FingerprintUiHelper.C
_slots = (SlotCollection) intent.getSerializableExtra("slots"); _slots = (SlotCollection) intent.getSerializableExtra("slots");
// only show the fingerprint controls if the api version is new enough, permission is granted, a scanner is found and a fingerprint slot is found // only show the fingerprint controls if the api version is new enough, permission is granted, a scanner is found and a fingerprint slot is found
FingerprintManager manager = FingerprintUiHelper.getManager(this); FingerprintManager manager = FingerprintHelper.getManager(this);
if (manager != null && _slots.has(FingerprintSlot.class)) { if (manager != null && _slots.has(FingerprintSlot.class)) {
try { try {
KeyStoreHandle handle = new KeyStoreHandle(); KeyStoreHandle handle = new KeyStoreHandle();

View file

@ -14,7 +14,7 @@ import android.widget.TextView;
import com.github.paolorotolo.appintro.ISlidePolicy; import com.github.paolorotolo.appintro.ISlidePolicy;
import me.impy.aegis.helpers.FingerprintUiHelper; import me.impy.aegis.helpers.FingerprintHelper;
public class CustomAuthenticationSlide extends Fragment implements ISlidePolicy, RadioGroup.OnCheckedChangeListener { public class CustomAuthenticationSlide extends Fragment implements ISlidePolicy, RadioGroup.OnCheckedChangeListener {
public static final int CRYPT_TYPE_INVALID = 0; public static final int CRYPT_TYPE_INVALID = 0;
@ -28,13 +28,12 @@ public class CustomAuthenticationSlide extends Fragment implements ISlidePolicy,
@Override @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_authentication_slide, container, false); final View view = inflater.inflate(R.layout.fragment_authentication_slide, container, false);
_buttonGroup = view.findViewById(R.id.rg_authenticationMethod); _buttonGroup = view.findViewById(R.id.rg_authenticationMethod);
_buttonGroup.setOnCheckedChangeListener(this); _buttonGroup.setOnCheckedChangeListener(this);
onCheckedChanged(_buttonGroup, _buttonGroup.getCheckedRadioButtonId()); onCheckedChanged(_buttonGroup, _buttonGroup.getCheckedRadioButtonId());
// only show the fingerprint option if the api version is new enough, permission is granted and a scanner is found // only show the fingerprint option if the api version is new enough, permission is granted and a scanner is found
FingerprintManager manager = FingerprintUiHelper.getManager(getContext()); FingerprintManager manager = FingerprintHelper.getManager(getContext());
if (manager != null) { if (manager != null) {
RadioButton button = view.findViewById(R.id.rb_fingerprint); RadioButton button = view.findViewById(R.id.rb_fingerprint);
TextView text = view.findViewById(R.id.text_rb_fingerprint); TextView text = view.findViewById(R.id.text_rb_fingerprint);

View file

@ -0,0 +1,24 @@
package me.impy.aegis.helpers;
import android.Manifest;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
public class FingerprintHelper {
private FingerprintHelper() {
}
public static FingerprintManager getManager(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionHelper.granted(context, Manifest.permission.USE_FINGERPRINT)) {
FingerprintManager manager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
if (manager != null && manager.isHardwareDetected() && manager.hasEnrolledFingerprints()) {
return manager;
}
}
}
return null;
}
}

View file

@ -19,8 +19,6 @@
package me.impy.aegis.helpers; package me.impy.aegis.helpers;
import android.Manifest;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager;
import android.os.Build; import android.os.Build;
import android.os.CancellationSignal; import android.os.CancellationSignal;
@ -59,18 +57,6 @@ public class FingerprintUiHelper extends FingerprintManager.AuthenticationCallba
mCallback = callback; mCallback = callback;
} }
public static FingerprintManager getManager(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (PermissionHelper.granted(context, Manifest.permission.USE_FINGERPRINT)) {
FingerprintManager manager = (FingerprintManager) context.getSystemService(Context.FINGERPRINT_SERVICE);
if (manager != null && manager.isHardwareDetected() && manager.hasEnrolledFingerprints()) {
return manager;
}
}
}
return null;
}
public boolean isFingerprintAuthAvailable() { public boolean isFingerprintAuthAvailable() {
// The line below prevents the false positive inspection from Android Studio // The line below prevents the false positive inspection from Android Studio
// noinspection ResourceType // noinspection ResourceType