summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Yu <jackyu@google.com>2016-07-19 15:14:04 -0700
committerJack Yu <jackyu@google.com>2016-07-19 16:36:06 -0700
commit9ffa513ca20aff9cd6b32a582f23e28838f2153a (patch)
treed2c10158d7dcefe50a184b2706d3fafe20ac6913
parentd925b3a0ac2fc1efbe80f3af91f372485c3af5fd (diff)
downloadandroid_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
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java4
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java4
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java85
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;
}
}