diff --git a/app/src/main/java/i2p/bote/android/BoteActivityBase.java b/app/src/main/java/i2p/bote/android/BoteActivityBase.java
index 85aa8bc..695a6d9 100644
--- a/app/src/main/java/i2p/bote/android/BoteActivityBase.java
+++ b/app/src/main/java/i2p/bote/android/BoteActivityBase.java
@@ -1,8 +1,12 @@
package i2p.bote.android;
import android.annotation.SuppressLint;
+import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
+import android.view.WindowManager;
import i2p.bote.android.util.LocaleManager;
@@ -18,6 +22,14 @@ public class BoteActivityBase extends AppCompatActivity {
// Initialize I2P settings
InitActivities init = new InitActivities(this);
init.initialize();
+
+ // Initialize screen security
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
+ prefs.getBoolean("pref_screen_security", true))
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
+ else
+ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
@Override
diff --git a/app/src/main/java/i2p/bote/android/config/AppProtectionPreferenceFragment.java b/app/src/main/java/i2p/bote/android/config/AppProtectionPreferenceFragment.java
new file mode 100644
index 0000000..11f0c4e
--- /dev/null
+++ b/app/src/main/java/i2p/bote/android/config/AppProtectionPreferenceFragment.java
@@ -0,0 +1,41 @@
+package i2p.bote.android.config;
+
+import android.content.Intent;
+import android.os.Build;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.support.v4.preference.PreferenceFragment;
+
+import i2p.bote.android.R;
+
+public class AppProtectionPreferenceFragment extends PreferenceFragment {
+ @Override
+ public void onCreate(Bundle paramBundle) {
+ super.onCreate(paramBundle);
+ addPreferencesFromResource(R.xml.settings_app_protection);
+ setupAppProtectionSettings();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ //noinspection ConstantConditions
+ ((SettingsActivity) getActivity()).getSupportActionBar().setTitle(R.string.settings_label_app_protection);
+
+ // Screen security only works from API 14
+ Preference screenSecurityPreference = findPreference("pref_screen_security");
+ if (screenSecurityPreference != null &&
+ Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH)
+ getPreferenceScreen().removePreference(screenSecurityPreference);
+ }
+
+ private void setupAppProtectionSettings() {
+ findPreference("pref_change_password").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(Preference preference) {
+ startActivity(new Intent(getActivity(), SetPasswordActivity.class));
+ return true;
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/i2p/bote/android/config/SettingsActivity.java b/app/src/main/java/i2p/bote/android/config/SettingsActivity.java
index 3aa733f..bed350c 100644
--- a/app/src/main/java/i2p/bote/android/config/SettingsActivity.java
+++ b/app/src/main/java/i2p/bote/android/config/SettingsActivity.java
@@ -20,9 +20,9 @@ public class SettingsActivity extends BoteActivityBase implements
SharedPreferences.OnSharedPreferenceChangeListener {
public static final String PREFERENCE_CATEGORY = "preference_category";
public static final String PREFERENCE_CATEGORY_GENERAL = "preference_category_general";
- public static final String PREFERENCE_CATEGORY_CHANGE_PASSWORD = "preference_category_change_password";
public static final String PREFERENCE_CATEGORY_IDENTITIES = "preference_category_identities";
public static final String PREFERENCE_CATEGORY_PRIVACY = "preference_category_privacy";
+ public static final String PREFERENCE_CATEGORY_APP_PROTECTION = "preference_category_app_protection";
public static final String PREFERENCE_CATEGORY_APPEARANCE = "preference_category_appearance";
public static final String PREFERENCE_CATEGORY_ADVANCED = "preference_category_advanced";
@@ -90,12 +90,12 @@ public class SettingsActivity extends BoteActivityBase implements
findPreference(PREFERENCE_CATEGORY_GENERAL)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_GENERAL));
- findPreference(PREFERENCE_CATEGORY_CHANGE_PASSWORD)
- .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_CHANGE_PASSWORD));
findPreference(PREFERENCE_CATEGORY_IDENTITIES)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_IDENTITIES));
findPreference(PREFERENCE_CATEGORY_PRIVACY)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_PRIVACY));
+ findPreference(PREFERENCE_CATEGORY_APP_PROTECTION)
+ .setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_APP_PROTECTION));
findPreference(PREFERENCE_CATEGORY_APPEARANCE)
.setOnPreferenceClickListener(new CategoryClickListener(PREFERENCE_CATEGORY_APPEARANCE));
findPreference(PREFERENCE_CATEGORY_ADVANCED)
@@ -119,11 +119,6 @@ public class SettingsActivity extends BoteActivityBase implements
@Override
public boolean onPreferenceClick(Preference preference) {
switch (category) {
- case PREFERENCE_CATEGORY_CHANGE_PASSWORD:
- Intent spi = new Intent(getActivity(), SetPasswordActivity.class);
- startActivity(spi);
- break;
-
case PREFERENCE_CATEGORY_IDENTITIES:
Intent ili = new Intent(getActivity(), IdentityListActivity.class);
startActivity(ili);
@@ -148,6 +143,8 @@ public class SettingsActivity extends BoteActivityBase implements
return new GeneralPreferenceFragment();
case PREFERENCE_CATEGORY_PRIVACY:
return new PrivacyPreferenceFragment();
+ case PREFERENCE_CATEGORY_APP_PROTECTION:
+ return new AppProtectionPreferenceFragment();
case PREFERENCE_CATEGORY_APPEARANCE:
return new AppearancePreferenceFragment();
case PREFERENCE_CATEGORY_ADVANCED:
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 43f2dc4..ff3ef34 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -204,6 +204,9 @@
%s minutes
Maximum delay per hop
%s minutes
+ App protection
+ Screen security
+ Block screenshots in the recents list and inside the app
Appearance
Language
Default
diff --git a/app/src/main/res/xml/settings.xml b/app/src/main/res/xml/settings.xml
index 5ad9be6..e7f18fd 100644
--- a/app/src/main/res/xml/settings.xml
+++ b/app/src/main/res/xml/settings.xml
@@ -3,15 +3,15 @@
-
+
diff --git a/app/src/main/res/xml/settings_app_protection.xml b/app/src/main/res/xml/settings_app_protection.xml
new file mode 100644
index 0000000..d91b59c
--- /dev/null
+++ b/app/src/main/res/xml/settings_app_protection.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
\ No newline at end of file