diff --git a/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java b/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java
index 7d316626..4213f836 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/AegisApplication.java
@@ -1,7 +1,10 @@
package com.beemdevelopment.aegis;
import android.app.Application;
+import android.content.BroadcastReceiver;
+import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.pm.ShortcutInfo;
import android.content.pm.ShortcutManager;
import android.graphics.drawable.Icon;
@@ -24,6 +27,10 @@ public class AegisApplication extends Application {
_manager = new DatabaseManager(this);
_prefs = new Preferences(this);
+ // listen for SCREEN_OFF events
+ ScreenOffReceiver receiver = new ScreenOffReceiver();
+ registerReceiver(receiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
+
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N_MR1) {
initAppShortcuts();
}
@@ -57,4 +64,20 @@ public class AegisApplication extends Application {
shortcutManager.setDynamicShortcuts(Collections.singletonList(shortcut));
}
+
+ public boolean isAutoLockEnabled() {
+ return _prefs.isAutoLockEnabled() && _manager.isEncryptionEnabled() && !_manager.isLocked();
+ }
+
+ private class ScreenOffReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (isAutoLockEnabled()) {
+ _manager.lock();
+ Intent newIntent = new Intent(getApplicationContext(), MainActivity.class);
+ newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivity(newIntent);
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java
index 0fdbb107..29f2cabd 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java
@@ -27,6 +27,10 @@ public class Preferences {
return _prefs.getBoolean("pref_intro", false);
}
+ public boolean isAutoLockEnabled() {
+ return _prefs.getBoolean("pref_auto_lock", true);
+ }
+
public void setIntroDone(boolean done) {
_prefs.edit().putBoolean("pref_intro", done).apply();
}
diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java
index 8599712c..d81be4b1 100644
--- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java
+++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java
@@ -363,6 +363,15 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
updateLockIcon();
}
+ @Override
+ public void onBackPressed() {
+ if (_app.isAutoLockEnabled()) {
+ lockDatabase();
+ }
+
+ super.onBackPressed();
+ }
+
private BottomSheetDialog createBottomSheet(final DatabaseEntry entry) {
BottomSheetDialog dialog = new BottomSheetDialog(this);
dialog.setContentView(R.layout.bottom_sheet_edit_entry);
@@ -428,6 +437,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
return true;
case R.id.action_lock:
lockDatabase();
+ startAuthActivity();
return true;
default:
if (item.getGroupId() == R.id.action_filter_group) {
@@ -475,7 +485,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
_entryListView.clearEntries();
_db.lock();
_loaded = false;
- startAuthActivity();
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index bed03f22..8f0197e0 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -30,6 +30,8 @@
Tap to reveal
Tokens will be hidden by default. Tap on the tokens to reveal code.
Timeout for tap to reveal
+ Auto lock
+ Automatically lock when you close the app or lock your device.
Encryption
Encrypt the database and unlock it with a password or fingerprint
Fingerprint
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index d42bdf78..d1bde072 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -42,13 +42,18 @@
android:title="@string/pref_secure_screen_title"
android:summary="@string/pref_secure_screen_summary"
app:iconSpaceReserved="false"/>
+
-