diff --git a/CHANGELOG.md b/CHANGELOG.md index d553dcc71c..283ba07d50 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,12 @@ ### [Banji](https://en.wikipedia.org/wiki/Banji) +### Next version + +* Added option to disable lock on screen off for biometric authentication +* Small improvements and minor bug fixes +* Updated translations + ### 1.1764 * Added support for latin and roman numbered lists (view only) diff --git a/app/src/main/assets/CHANGELOG.md b/app/src/main/assets/CHANGELOG.md index d553dcc71c..283ba07d50 100644 --- a/app/src/main/assets/CHANGELOG.md +++ b/app/src/main/assets/CHANGELOG.md @@ -4,6 +4,12 @@ ### [Banji](https://en.wikipedia.org/wiki/Banji) +### Next version + +* Added option to disable lock on screen off for biometric authentication +* Small improvements and minor bug fixes +* Updated translations + ### 1.1764 * Added support for latin and roman numbered lists (view only) diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 3e4e70cddc..c90456780c 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -281,7 +281,8 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); boolean biometrics = prefs.getBoolean("biometrics", false); String pin = prefs.getString("pin", null); - if (biometrics || !TextUtils.isEmpty(pin)) { + boolean autolock = prefs.getBoolean("autolock", true); + if (autolock && (biometrics || !TextUtils.isEmpty(pin))) { Helper.clearAuthentication(this); finish(); } diff --git a/app/src/main/java/eu/faircode/email/ApplicationEx.java b/app/src/main/java/eu/faircode/email/ApplicationEx.java index c680a299ff..58abe711aa 100644 --- a/app/src/main/java/eu/faircode/email/ApplicationEx.java +++ b/app/src/main/java/eu/faircode/email/ApplicationEx.java @@ -701,7 +701,10 @@ public class ApplicationEx extends Application public void onReceive(Context context, Intent intent) { Log.i("Received " + intent); Log.logExtras(intent); - Helper.clearAuthentication(ApplicationEx.this); + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + boolean autolock = prefs.getBoolean("autolock", true); + if (autolock) + Helper.clearAuthentication(ApplicationEx.this); } }; diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java index 118230c03c..c389835b47 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsPrivacy.java @@ -70,6 +70,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer private Button btnPin; private Button btnBiometrics; private Spinner spBiometricsTimeout; + private SwitchCompat swAutoLock; private SwitchCompat swClientId; private TextView tvClientId; private SwitchCompat swDisplayHidden; @@ -93,7 +94,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer "confirm_links", "check_links_dbl", "browse_links", "confirm_images", "html_always_images", "confirm_html", "disable_tracking", "hide_timezone", - "pin", "biometrics", "biometrics_timeout", + "pin", "biometrics", "biometrics_timeout", "autolock", "client_id", "display_hidden", "incognito_keyboard", "secure", "generic_ua", "safe_browsing", "disconnect_auto_update", "disconnect_links", "disconnect_images" @@ -120,6 +121,7 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer btnPin = view.findViewById(R.id.btnPin); btnBiometrics = view.findViewById(R.id.btnBiometrics); spBiometricsTimeout = view.findViewById(R.id.spBiometricsTimeout); + swAutoLock = view.findViewById(R.id.swAutoLock); swClientId = view.findViewById(R.id.swClientId); tvClientId = view.findViewById(R.id.tvClientId); swDisplayHidden = view.findViewById(R.id.swDisplayHidden); @@ -255,6 +257,13 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer } }); + swAutoLock.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { + prefs.edit().putBoolean("autolock", checked).apply(); + } + }); + swClientId.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { @@ -445,6 +454,8 @@ public class FragmentOptionsPrivacy extends FragmentBase implements SharedPrefer break; } + swAutoLock.setChecked(prefs.getBoolean("autolock", true)); + swClientId.setChecked(prefs.getBoolean("client_id", true)); swDisplayHidden.setChecked(prefs.getBoolean("display_hidden", false)); swIncognitoKeyboard.setChecked(prefs.getBoolean("incognito_keyboard", false)); diff --git a/app/src/main/res/layout/fragment_options_privacy.xml b/app/src/main/res/layout/fragment_options_privacy.xml index cfbd7de1ec..86ca840264 100644 --- a/app/src/main/res/layout/fragment_options_privacy.xml +++ b/app/src/main/res/layout/fragment_options_privacy.xml @@ -249,6 +249,7 @@ android:id="@+id/tvBiometricsTimeout" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginStart="12dp" android:layout_marginTop="12dp" android:layout_marginEnd="48dp" android:text="@string/title_advanced_biometrics_timeout" @@ -262,10 +263,24 @@ android:id="@+id/spBiometricsTimeout" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginStart="12dp" android:layout_marginTop="12dp" android:entries="@array/biometricsTimeoutNames" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvBiometricsTimeout" /> + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a9587a6f47..6b3c5a98d6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -593,6 +593,7 @@ Hide from recent apps screen and prevent taking screenshots PIN Biometric authentication timeout + Lock on screen off Use generic browser user agent Google Safe browsing (Android 8+) Disconnect\'s tracker protection lists diff --git a/metadata/en-US/changelogs/1764.txt b/metadata/en-US/changelogs/1764.txt index d553dcc71c..283ba07d50 100644 --- a/metadata/en-US/changelogs/1764.txt +++ b/metadata/en-US/changelogs/1764.txt @@ -4,6 +4,12 @@ ### [Banji](https://en.wikipedia.org/wiki/Banji) +### Next version + +* Added option to disable lock on screen off for biometric authentication +* Small improvements and minor bug fixes +* Updated translations + ### 1.1764 * Added support for latin and roman numbered lists (view only)