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 @@ +