OSDN Git Service

Forward port SMS rate limit setting
authorRoman Birg <roman@cyngn.com>
Thu, 13 Nov 2014 01:14:28 +0000 (17:14 -0800)
committerSteve Kondik <steve@cyngn.com>
Fri, 13 Nov 2015 08:01:09 +0000 (09:01 +0100)
Change-Id: Ie8fea98e9e24b0f6302eaed22af9241f85ca965a

res/values/cm_arrays.xml
res/values/cm_strings.xml
res/xml/security_settings_misc.xml [changed mode: 0644->0755]
src/com/android/settings/SecuritySettings.java [changed mode: 0644->0755]

index 6ed2d8c..8aee1ff 100644 (file)
         <item>1</item>
         <item>2</item>
     </string-array>
+
+    <!--- Sms security limit -->
+         <string-array name="sms_security_check_limit_entries" translatable="false">
+             <item>@string/sms_security_check_limit_default</item>
+             <item>50</item>
+             <item>100</item>
+             <item>200</item>
+         </string-array>
+    
+         <string-array name="sms_security_check_limit_values" translatable="false">
+             <item>30</item>
+             <item>50</item>
+             <item>100</item>
+             <item>200</item>
+         </string-array>
 </resources>
index bb642e4..a30b4c6 100644 (file)
     <string name="select_custom_app_title">Select custom app</string>
     <string name="select_custom_activity_title">Select custom activity</string>
 
+    <!--- Sms security limit -->
+    <string name="app_security_title">App security</string>
+    <string name="sms_security_check_limit_title">SMS message limit</string>
+    <string name="sms_security_check_limit_summary">Display an alert dialog to prevent applications from sending SMS messages too frequently. Current limit: %d messages in 15 minutes</string>
+    <string name="sms_security_check_limit_default">30 (Default)</string>
+
 </resources>
old mode 100644 (file)
new mode 100755 (executable)
index b67e1b7..21f4477
 
     </PreferenceCategory>
 
+    <PreferenceCategory
+        android:key="app_security"
+        android:title="@string/app_security_title">
+
+        <ListPreference
+            android:key="sms_security_check_limit"
+            android:dialogTitle="@string/sms_security_check_limit_title"
+            android:title="@string/sms_security_check_limit_title"
+            android:entries="@array/sms_security_check_limit_entries"
+            android:entryValues="@array/sms_security_check_limit_values"
+            android:defaultValue="30" />
+
+    </PreferenceCategory>
+
     <PreferenceCategory android:title="@string/security_passwords_title"
             android:persistent="false">
 
old mode 100644 (file)
new mode 100755 (executable)
index 892d61f..66af22b
@@ -103,6 +103,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
     private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";
     private static final String KEY_TRUST_AGENT = "trust_agent";
     private static final String KEY_SCREEN_PINNING = "screen_pinning_settings";
+    private static final String KEY_TOGGLE_DM_AUTOBOOT = "toggle_dm_autoboot";
+    private static final String KEY_SMS_SECURITY_CHECK_PREF = "sms_security_check_limit";
+    private static final String DM_AUTOBOOT_SETTING = "dm_selfregist_autoboot";
+    private static final int DM_AUTOBOOT_SETTING_ENABLE = 1;
+    private static final int DM_AUTOBOOT_SETTING_DISABLE = 0;
 
     // These switch preferences need special handling since they're not all stored in Settings.
     private static final String SWITCH_PREFERENCE_KEYS[] = { KEY_LOCK_AFTER_TIMEOUT,
@@ -132,6 +137,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
     private DialogInterface mWarnInstallApps;
     private SwitchPreference mPowerButtonInstantlyLocks;
 
+    private ListPreference mSmsSecurityCheck;
+
     private boolean mIsPrimary;
 
     private Intent mTrustAgentClickIntent;
@@ -202,6 +209,9 @@ public class SecuritySettings extends SettingsPreferenceFragment
         addPreferencesFromResource(R.xml.security_settings);
         root = getPreferenceScreen();
 
+        // Add package manager to check if features are available
+        PackageManager pm = getPackageManager();
+
         // Add options for lock/unlock screen
         final int resid = getResIdForLockUnlockScreen(getActivity(), mLockPatternUtils);
         addPreferencesFromResource(resid);
@@ -281,6 +291,15 @@ public class SecuritySettings extends SettingsPreferenceFragment
                     getResources().getString(R.string.switch_on_text));
         }
 
+        // SMS rate limit security check
+        boolean isTelephony = pm.hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
+        if (isTelephony) {
+            mSmsSecurityCheck = (ListPreference) root.findPreference(KEY_SMS_SECURITY_CHECK_PREF);
+            mSmsSecurityCheck.setOnPreferenceChangeListener(this);
+            int smsSecurityCheck = Integer.valueOf(mSmsSecurityCheck.getValue());
+            updateSmsSecuritySummary(smsSecurityCheck);
+        }
+
         // Show password
         mShowPassword = (SwitchPreference) root.findPreference(KEY_SHOW_PASSWORD);
         mResetCredentials = root.findPreference(KEY_RESET_CREDENTIALS);
@@ -338,6 +357,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
             final Preference pref = findPreference(SWITCH_PREFERENCE_KEYS[i]);
             if (pref != null) pref.setOnPreferenceChangeListener(this);
         }
+
         return root;
     }
 
@@ -513,6 +533,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
         }
     }
 
+    private void updateSmsSecuritySummary(int i) {
+        String message = getString(R.string.sms_security_check_limit_summary, i);
+        mSmsSecurityCheck.setSummary(message);
+    }
+
     private void setupLockAfterPreference() {
         // Compatible with pre-Froyo
         long currentTimeout = Settings.Secure.getLong(getContentResolver(),
@@ -704,6 +729,11 @@ public class SecuritySettings extends SettingsPreferenceFragment
             } else {
                 setNonMarketAppsAllowed(false);
             }
+        } else if (KEY_SMS_SECURITY_CHECK_PREF.equals(key)) {
+            int smsSecurityCheck = Integer.valueOf((String) value);
+            Settings.Secure.putInt(getContentResolver(), Settings.Global.SMS_OUTGOING_CHECK_MAX_COUNT,
+                    smsSecurityCheck);
+            updateSmsSecuritySummary(smsSecurityCheck);
         }
         return result;
     }