diff options
author | Jack Yu <jackyu@google.com> | 2016-07-19 15:14:04 -0700 |
---|---|---|
committer | Jack Yu <jackyu@google.com> | 2016-07-19 16:36:06 -0700 |
commit | 9ffa513ca20aff9cd6b32a582f23e28838f2153a (patch) | |
tree | d2c10158d7dcefe50a184b2706d3fafe20ac6913 | |
parent | d925b3a0ac2fc1efbe80f3af91f372485c3af5fd (diff) | |
download | android_packages_apps_CellBroadcastReceiver-9ffa513ca20aff9cd6b32a582f23e28838f2153a.tar.gz android_packages_apps_CellBroadcastReceiver-9ffa513ca20aff9cd6b32a582f23e28838f2153a.tar.bz2 android_packages_apps_CellBroadcastReceiver-9ffa513ca20aff9cd6b32a582f23e28838f2153a.zip |
Made severe and extreme alert configuration dependency configurable
Before when extreme alert is disabled, severe alert will be disabled
by default because we assume users won't be interested in severe
alert if he is even not interested in extreme (higher level) alert.
Now carriers are allowed to turn this feature off by carrier config.
bug: 29369591
Change-Id: I41f20b346b4ffe9f0a3401574b9bd73c48e848c2
3 files changed, 34 insertions, 59 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java index eb57683b..f4ec5e04 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java @@ -31,6 +31,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.preference.PreferenceManager; import android.provider.Telephony; +import android.telephony.CarrierConfigManager; import android.telephony.CellBroadcastMessage; import android.telephony.SmsCbCmasInfo; import android.telephony.SmsCbEtwsInfo; @@ -290,7 +291,8 @@ public class CellBroadcastAlertService extends Service { // Check if ETWS/CMAS test message is forced to disabled on the device. boolean forceDisableEtwsCmasTest = - CellBroadcastSettings.isEtwsCmasTestMessageForcedDisabled(this); + CellBroadcastSettings.isFeatureEnabled(this, + CarrierConfigManager.KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL, false); if (message.isEtwsTestMessage()) { return emergencyAlertEnabled && diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java index 76249e06..a38795bb 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java @@ -22,6 +22,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.res.Resources; import android.preference.PreferenceManager; +import android.telephony.CarrierConfigManager; import android.telephony.SmsManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; @@ -155,7 +156,8 @@ public class CellBroadcastConfigService extends IntentService { // Check if ETWS/CMAS test message is forced disabled on the device. boolean forceDisableEtwsCmasTest = - CellBroadcastSettings.isEtwsCmasTestMessageForcedDisabled(this); + CellBroadcastSettings.isFeatureEnabled(this, + CarrierConfigManager.KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL, false); boolean enableEtwsTestAlerts = !forceDisableEtwsCmasTest && enableEmergencyAlerts && diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index f5d5966c..73cf172a 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -125,6 +125,7 @@ public class CellBroadcastSettings extends PreferenceActivity { private CheckBoxPreference mCmasTestCheckBox; private PreferenceCategory mAlertCategory; private PreferenceCategory mETWSSettingCategory; + private boolean mDisableSevereWhenExtremeDisabled = true; @Override public void onCreate(Bundle savedInstanceState) { @@ -158,6 +159,9 @@ public class CellBroadcastSettings extends PreferenceActivity { mETWSSettingCategory = (PreferenceCategory) findPreference(KEY_CATEGORY_ETWS_SETTINGS); + mDisableSevereWhenExtremeDisabled = isFeatureEnabled(getContext(), + CarrierConfigManager.KEY_DISABLE_SEVERE_WHEN_EXTREME_DISABLED_BOOL, true); + // Handler for settings that require us to reconfigure enabled channels in radio Preference.OnPreferenceChangeListener startConfigServiceListener = new Preference.OnPreferenceChangeListener() { @@ -165,11 +169,13 @@ public class CellBroadcastSettings extends PreferenceActivity { public boolean onPreferenceChange(Preference pref, Object newValue) { CellBroadcastReceiver.startConfigService(pref.getContext()); - if (pref.getKey().equals(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS)) { - boolean isExtremeAlertChecked = (Boolean)newValue; - if (mSevereCheckBox != null) { - mSevereCheckBox.setEnabled(isExtremeAlertChecked); - mSevereCheckBox.setChecked(false); + if (mDisableSevereWhenExtremeDisabled) { + if (pref.getKey().equals(KEY_ENABLE_CMAS_EXTREME_THREAT_ALERTS)) { + boolean isExtremeAlertChecked = (Boolean)newValue; + if (mSevereCheckBox != null) { + mSevereCheckBox.setEnabled(isExtremeAlertChecked); + mSevereCheckBox.setChecked(false); + } } } @@ -178,7 +184,7 @@ public class CellBroadcastSettings extends PreferenceActivity { }; // Show extra settings when developer options is enabled in settings. - boolean enableDevSettings = Settings.Global.getInt(getActivity().getContentResolver(), + boolean enableDevSettings = Settings.Global.getInt(getContext().getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; Resources res = getResources(); @@ -186,11 +192,11 @@ public class CellBroadcastSettings extends PreferenceActivity { initReminderIntervalList(); - boolean forceDisableEtwsCmasTest = - isEtwsCmasTestMessageForcedDisabled(getActivity()); + boolean forceDisableEtwsCmasTest = CellBroadcastSettings.isFeatureEnabled(getContext(), + CarrierConfigManager.KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL, false); - boolean emergencyAlertOnOffOptionEnabled = - isEmergencyAlertOnOffOptionEnabled(getActivity()); + boolean emergencyAlertOnOffOptionEnabled = isFeatureEnabled(getContext(), + CarrierConfigManager.KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL, false); if (enableDevSettings || showEtwsSettings || emergencyAlertOnOffOptionEnabled) { // enable/disable all alerts except CMAS presidential alerts. @@ -229,7 +235,7 @@ public class CellBroadcastSettings extends PreferenceActivity { mAlertCategory.removePreference(mAmberCheckBox); } - TelephonyManager tm = (TelephonyManager) getActivity().getSystemService( + TelephonyManager tm = (TelephonyManager) getContext().getSystemService( Context.TELEPHONY_SERVICE); // We display channel 50 enable/disable menu if one of the followings is true @@ -264,10 +270,13 @@ public class CellBroadcastSettings extends PreferenceActivity { if (mExtremeCheckBox != null) { mExtremeCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } + if (mSevereCheckBox != null) { mSevereCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); - if (mExtremeCheckBox != null) { - mSevereCheckBox.setEnabled(mExtremeCheckBox.isChecked()); + if (mDisableSevereWhenExtremeDisabled) { + if (mExtremeCheckBox != null) { + mSevereCheckBox.setEnabled(mExtremeCheckBox.isChecked()); + } } } if (mAmberCheckBox != null) { @@ -313,64 +322,26 @@ public class CellBroadcastSettings extends PreferenceActivity { } } - // Check if ETWS/CMAS test message is forced disabled on the device. - public static boolean isEtwsCmasTestMessageForcedDisabled(Context context) { - - if (context == null) { - return false; - } - + public static boolean isFeatureEnabled(Context context, String feature, boolean defaultValue) { int subId = SubscriptionManager.getDefaultSmsSubscriptionId(); if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { subId = SubscriptionManager.getDefaultSubscriptionId(); - if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) - return false; - } - - CarrierConfigManager configManager = - (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE); - - if (configManager != null) { - PersistableBundle carrierConfig = - configManager.getConfigForSubId(subId); - - if (carrierConfig != null) { - return carrierConfig.getBoolean( - CarrierConfigManager.KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL); + if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + return defaultValue; } } - return false; - } - - // Check if "Turn on Notifications" option should be always displayed regardless of developer - // options turned on or not. - public static boolean isEmergencyAlertOnOffOptionEnabled(Context context) { - - if (context == null) { - return false; - } - - int subId = SubscriptionManager.getDefaultSmsSubscriptionId(); - if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { - subId = SubscriptionManager.getDefaultSubscriptionId(); - if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) - return false; - } - CarrierConfigManager configManager = (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE); if (configManager != null) { - PersistableBundle carrierConfig = - configManager.getConfigForSubId(subId); + PersistableBundle carrierConfig = configManager.getConfigForSubId(subId); if (carrierConfig != null) { - return carrierConfig.getBoolean( - CarrierConfigManager.KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL); + return carrierConfig.getBoolean(feature, defaultValue); } } - return false; + return defaultValue; } } |