From 7f1d590fbd566aac8b2970ad6533e2ef41bd617d Mon Sep 17 00:00:00 2001 From: sorz Date: Wed, 15 Mar 2017 22:38:47 +1100 Subject: [PATCH] Add fingerprint protection switch --- app/src/main/AndroidManifest.xml | 1 + .../java/com/hippo/ehviewer/Settings.java | 10 ++++++++++ .../ehviewer/ui/SetSecurityActivity.java | 19 ++++++++++++++++++- .../res/layout-land/activity_set_security.xml | 9 +++++++++ .../main/res/layout/activity_set_security.xml | 9 +++++++++ app/src/main/res/values/strings.xml | 1 + 6 files changed, 48 insertions(+), 1 deletion(-) mode change 100644 => 100755 app/src/main/AndroidManifest.xml mode change 100644 => 100755 app/src/main/java/com/hippo/ehviewer/Settings.java mode change 100644 => 100755 app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java mode change 100644 => 100755 app/src/main/res/layout-land/activity_set_security.xml mode change 100644 => 100755 app/src/main/res/layout/activity_set_security.xml mode change 100644 => 100755 app/src/main/res/values/strings.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml old mode 100644 new mode 100755 index 077193be3..4d9507ff7 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,6 +22,7 @@ + diff --git a/app/src/main/java/com/hippo/ehviewer/Settings.java b/app/src/main/java/com/hippo/ehviewer/Settings.java old mode 100644 new mode 100755 index 12f20231e..f41b95bcf --- a/app/src/main/java/com/hippo/ehviewer/Settings.java +++ b/app/src/main/java/com/hippo/ehviewer/Settings.java @@ -911,6 +911,16 @@ public class Settings { putString(KEY_SECURITY, value); } + public static final String KEY_ENABLE_FINGERPRINT = "enable_fingerprint"; + + public static boolean getEnableFingerprint() { + return getBoolean(KEY_ENABLE_FINGERPRINT, false); + } + + public static void putEnableFingerprint(boolean value) { + putBoolean(KEY_ENABLE_FINGERPRINT, value); + } + public static final String KEY_READ_CACHE_SIZE = "read_cache_size"; public static final int DEFAULT_READ_CACHE_SIZE = 160; diff --git a/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java old mode 100644 new mode 100755 index ebc9b3954..e17ca11a0 --- a/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/SetSecurityActivity.java @@ -16,11 +16,13 @@ package com.hippo.ehviewer.ui; +import android.hardware.fingerprint.FingerprintManager; import android.os.Bundle; import android.support.annotation.Nullable; import android.text.TextUtils; import android.view.MenuItem; import android.view.View; +import android.widget.CheckBox; import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; @@ -36,6 +38,8 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick private View mCancel; @Nullable private View mSet; + @Nullable + private CheckBox mFingerprint; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -46,6 +50,7 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick mPatternView = (LockPatternView) ViewUtils.$$(this, R.id.pattern_view); mCancel = ViewUtils.$$(this, R.id.cancel); mSet = ViewUtils.$$(this, R.id.set); + mFingerprint = (CheckBox) ViewUtils.$$(this, R.id.fingerprint_checkbox); String pattern = Settings.getSecurity(); if (!TextUtils.isEmpty(pattern)) { @@ -53,6 +58,16 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick LockPatternUtils.stringToPattern(pattern)); } + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + FingerprintManager fingerprintManager = getSystemService(FingerprintManager.class); + // The line below prevents the false positive inspection from Android Studio + // noinspection ResourceType + if (fingerprintManager.hasEnrolledFingerprints()) { + mFingerprint.setVisibility(View.VISIBLE); + mFingerprint.setChecked(Settings.getEnableFingerprint()); + } + } + mCancel.setOnClickListener(this); mSet.setOnClickListener(this); } @@ -79,7 +94,7 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick if (v == mCancel) { finish(); } else if (v == mSet) { - if (null != mPatternView) { + if (null != mPatternView && null != mFingerprint) { String security; if (mPatternView.getCellSize() <= 1) { security = ""; @@ -87,6 +102,8 @@ public class SetSecurityActivity extends ToolbarActivity implements View.OnClick security = mPatternView.getPatternString(); } Settings.putSecurity(security); + Settings.putEnableFingerprint(mFingerprint.getVisibility() == View.VISIBLE && + mFingerprint.isChecked() && !security.isEmpty()); } finish(); } diff --git a/app/src/main/res/layout-land/activity_set_security.xml b/app/src/main/res/layout-land/activity_set_security.xml old mode 100644 new mode 100755 index 6f4b4e0bb..3ed310944 --- a/app/src/main/res/layout-land/activity_set_security.xml +++ b/app/src/main/res/layout-land/activity_set_security.xml @@ -40,6 +40,15 @@ android:layout_height="0dp" android:layout_weight="1"/> + + + + Set pattern protection Draw a pattern to set pattern protection\nLeave blank to clear pattern protection Set + Also allow unlock with fingerprint Page %d