diff --git a/app/src/main/java/me/impy/aegis/ui/AegisActivity.java b/app/src/main/java/me/impy/aegis/ui/AegisActivity.java
index d98e869e..c0e26686 100644
--- a/app/src/main/java/me/impy/aegis/ui/AegisActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/AegisActivity.java
@@ -16,7 +16,9 @@ public abstract class AegisActivity extends AppCompatActivity {
_app = (AegisApplication) getApplication();
// set FLAG_SECURE on the window of every AegisActivity
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
+ if (_app.getPreferences().getBoolean("pref_secure_screen", true)) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
// set the theme
_darkMode = _app.getPreferences().getBoolean("pref_dark_mode", false);
diff --git a/app/src/main/java/me/impy/aegis/ui/IntroActivity.java b/app/src/main/java/me/impy/aegis/ui/IntroActivity.java
index 892516d1..8ecc0e48 100644
--- a/app/src/main/java/me/impy/aegis/ui/IntroActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/IntroActivity.java
@@ -55,7 +55,9 @@ public class IntroActivity extends AppIntro implements DerivationTask.Callback {
_app = (AegisApplication) getApplication();
// set FLAG_SECURE on the window of every IntroActivity
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
+ if (_app.getPreferences().getBoolean("pref_secure_screen", true)) {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
showSkipButton(false);
//showPagerIndicator(false);
diff --git a/app/src/main/java/me/impy/aegis/ui/MainActivity.java b/app/src/main/java/me/impy/aegis/ui/MainActivity.java
index cf04ceea..52c3bf5e 100644
--- a/app/src/main/java/me/impy/aegis/ui/MainActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/MainActivity.java
@@ -192,13 +192,9 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen
private void onPreferencesResult(int resultCode, Intent data) {
// refresh the entire key profile list if needed
- if (data.getBooleanExtra("needsReload", false)) {
- _keyProfileView.clearKeys();
- for (DatabaseEntry entry : _db.getKeys()) {
- _keyProfileView.addKey(new KeyProfile(entry));
- }
- }
- if (data.getBooleanExtra("needsRefresh", false)) {
+ if (data.getBooleanExtra("needsRecreate", false)) {
+ recreate();
+ } else if (data.getBooleanExtra("needsRefresh", false)) {
boolean showIssuer = _app.getPreferences().getBoolean("pref_issuer", false);
_keyProfileView.setShowIssuer(showIssuer);
}
@@ -343,12 +339,6 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen
protected void onResume() {
super.onResume();
- boolean darkMode = _app.getPreferences().getBoolean("pref_dark_mode", false);
- if (darkMode != isDark()) {
- setPreferredTheme(darkMode);
- recreate();
- }
-
// refresh all codes to prevent showing old ones
_keyProfileView.refresh();
}
diff --git a/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java b/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java
index a1fe69b5..6e77a6cd 100644
--- a/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java
+++ b/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java
@@ -11,6 +11,8 @@ import android.preference.EditTextPreference;
import android.preference.Preference;
import android.preference.PreferenceFragment;
import android.support.v7.app.AlertDialog;
+import android.view.Window;
+import android.view.WindowManager;
import android.widget.Toast;
import java.io.FileNotFoundException;
@@ -49,15 +51,6 @@ public class PreferencesFragment extends PreferenceFragment {
// while the user provides credentials to decrypt it
private DatabaseImporter _converter;
- private void setResult() {
- getActivity().setResult(Activity.RESULT_OK, _result);
- }
-
- private void finish() {
- setResult();
- getActivity().finish();
- }
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -67,12 +60,13 @@ public class PreferencesFragment extends PreferenceFragment {
_db = app.getDatabaseManager();
// set the result intent in advance
- setResult();
+ getActivity().setResult(Activity.RESULT_OK, _result);
Preference darkModePreference = findPreference("pref_dark_mode");
darkModePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
+ _result.putExtra("needsRecreate", true);
Toast.makeText(getActivity(), "Dark mode setting will be applied after closing this screen", Toast.LENGTH_SHORT).show();
return true;
}
@@ -128,6 +122,21 @@ public class PreferencesFragment extends PreferenceFragment {
return true;
}
});
+
+ Preference screenPreference = findPreference("pref_secure_screen");
+ screenPreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
+ @Override
+ public boolean onPreferenceChange(Preference preference, Object newValue) {
+ _result.putExtra("needsRecreate", true);
+ Window window = getActivity().getWindow();
+ if ((boolean)newValue) {
+ window.addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ } else {
+ window.clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ }
+ return true;
+ }
+ });
}
@Override
@@ -260,7 +269,7 @@ public class PreferencesFragment extends PreferenceFragment {
return;
}
- _result.putExtra("needsReload", true);
+ _result.putExtra("needsRecreate", true);
Toast.makeText(getActivity(), String.format(Locale.getDefault(), "Imported %d entries", entries.size()), Toast.LENGTH_LONG).show();
}
diff --git a/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java b/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java
index 64c6f502..1530b980 100644
--- a/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java
@@ -88,7 +88,7 @@ public class ScannerActivity extends AegisActivity implements ZXingScannerView.R
}
@Override
- protected void setPreferredTheme(boolean nightMode) {
+ protected void setPreferredTheme(boolean darkMode) {
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b241a7df..dd497b1a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -20,6 +20,8 @@
Import a database
Export
Export the database
+ Screen security
+ Block screenshots and other attempts to capture the screen within the app
Touch sensor
Fingerprint not recognized. Try again
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 3b61b8a1..36d51083 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -19,6 +19,11 @@
+