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