Implement screen security, combine with password in app protection category

This commit is contained in:
str4d
2015-05-29 08:20:06 +00:00
parent 95df77cef6
commit 992564f883
6 changed files with 78 additions and 11 deletions

View File

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

View File

@@ -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;
}
});
}
}

View File

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

View File

@@ -204,6 +204,9 @@
<string name="pref_summ_minDelay">%s minutes</string>
<string name="pref_title_maxDelay">Maximum delay per hop</string>
<string name="pref_summ_maxDelay">%s minutes</string>
<string name="settings_label_app_protection">App protection</string>
<string name="screen_security">Screen security</string>
<string name="screen_security_summ">Block screenshots in the recents list and inside the app</string>
<string name="settings_label_appearance">Appearance</string>
<string name="settings_label_language">Language</string>
<string name="settings_default">Default</string>

View File

@@ -3,15 +3,15 @@
<Preference
android:key="preference_category_general"
android:title="@string/pref_title_general"/>
<Preference
android:key="preference_category_change_password"
android:title="@string/pref_title_change_password"/>
<Preference
android:key="preference_category_identities"
android:title="@string/pref_title_identities"/>
<Preference
android:key="preference_category_privacy"
android:title="@string/pref_title_privacy" />
<Preference
android:key="preference_category_app_protection"
android:title="@string/settings_label_app_protection"/>
<Preference
android:key="preference_category_appearance"
android:title="@string/settings_label_appearance" />

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:key="pref_change_password"
android:title="@string/pref_title_change_password"/>
<CheckBoxPreference
android:defaultValue="true"
android:key="pref_screen_security"
android:summary="@string/screen_security_summ"
android:title="@string/screen_security"/>
</PreferenceScreen>