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)