Avoid FingerprintManager.hasEnrolledFingerprints() crash on samsung devices

This commit is contained in:
seven332 committed 2018-12-20 10:18:32 +08:00
1 parent 2681e4a6e6
commit 257758b27d
2 files changed
+15 -3

No files matched your search

@@ -17,8 +17,10 @@
package com.hippo.ehviewer.ui;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;
@@ -62,7 +64,7 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick
FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class);
// The line below prevents the false positive inspection from Android Studio
// noinspection ResourceType
if (fingerprintManager != null && fingerprintManager.hasEnrolledFingerprints()) {
if (fingerprintManager != null && hasEnrolledFingerprints(fingerprintManager)) {
mFingerprint.setVisibility(View.VISIBLE);
mFingerprint.setChecked(Settings.getEnableFingerprint());
}
@@ -72,6 +74,16 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick
mSet.setOnClickListener(this);
}
@RequiresApi(api = Build.VERSION_CODES.M)
public static boolean hasEnrolledFingerprints(FingerprintManager fingerprintManager) {
try {
return fingerprintManager.isHardwareDetected()
&& fingerprintManager.hasEnrolledFingerprints();
} catch (Throwable e) {
return false;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
@@ -31,6 +31,7 @@ import android.widget.ImageView;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.Settings;
import com.hippo.ehviewer.ui.MainActivity;
import com.hippo.ehviewer.ui.SetSecurityActivity;
import com.hippo.hardware.ShakeDetector;
import com.hippo.widget.lockpattern.LockPatternUtils;
import com.hippo.widget.lockpattern.LockPatternView;
@@ -235,8 +236,7 @@ public class SecurityScene extends SolidScene implements
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& Settings.getEnableFingerprint()
&& mFingerprintManager != null
&& mFingerprintManager.isHardwareDetected()
&& mFingerprintManager.hasEnrolledFingerprints();
&& SetSecurityActivity.hasEnrolledFingerprints(mFingerprintManager);
}
private Runnable mResetFingerprintRunnable = new Runnable() {