diff options
Diffstat (limited to 'src/com')
4 files changed, 37 insertions, 14 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java index 0a04dd0b9..b6406344d 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java @@ -371,6 +371,12 @@ public class CellBroadcastAlertService extends Service { } if (channelManager.checkCellBroadcastChannelRange(channel, + R.array.exercise_alert_range_strings) + && getResources().getBoolean(R.bool.always_enable_exercise_alert)) { + return true; + } + + if (channelManager.checkCellBroadcastChannelRange(channel, R.array.required_monthly_test_range_strings) || channelManager.checkCellBroadcastChannelRange(channel, R.array.exercise_alert_range_strings) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java index ac5503310..f20634a77 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java @@ -103,6 +103,7 @@ public class CellBroadcastConfigService extends IntentService { public void enableCellBroadcastChannels(int subId) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + Resources res = CellBroadcastSettings.getResources(this, subId); // boolean for each user preference checkbox, true for checked, false for unchecked // Note: If enableAlertsMasterToggle is false, it disables ALL emergency broadcasts @@ -192,9 +193,13 @@ public class CellBroadcastConfigService extends IntentService { channelManager.getCellBroadcastChannelRanges( R.array.required_monthly_test_range_strings)); - setCellBroadcastRange(subId, enableTestAlerts, + // Exercise is part of test toggle with monthly test and operator defined. some carriers + // mandate to show test settings in UI but always enable exercise alert. + setCellBroadcastRange(subId, enableTestAlerts || + res.getBoolean(R.bool.always_enable_exercise_alert), channelManager.getCellBroadcastChannelRanges( R.array.exercise_alert_range_strings)); + setCellBroadcastRange(subId, enableTestAlerts, channelManager.getCellBroadcastChannelRanges( R.array.operator_defined_alert_range_strings)); diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java index 2134e4631..676af0154 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSearchIndexableProvider.java @@ -229,6 +229,13 @@ public class CellBroadcastSearchIndexableProvider extends SearchIndexablesProvid cursor.addRow(ref); } + if (!CellBroadcastSettings.isTestAlertsToggleVisible(getContext())) { + ref = new Object[1]; + ref[COLUMN_INDEX_NON_INDEXABLE_KEYS_KEY_VALUE] = + CellBroadcastSettings.KEY_ENABLE_TEST_ALERTS; + cursor.addRow(ref); + } + return cursor; } } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index 67f23f6db..e3424349b 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -320,23 +320,11 @@ public class CellBroadcastSettings extends Activity { if (mMasterToggle != null) preferenceScreen.removePreference(mMasterToggle); } - boolean hideTestAlertMenu = CellBroadcastSettings.isFeatureEnabled(getContext(), - CarrierConfigManager.KEY_CARRIER_FORCE_DISABLE_ETWS_CMAS_TEST_BOOL, false); - CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager( getContext(), SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); - boolean isTestAlertsAvailable = !channelManager.getCellBroadcastChannelRanges( - R.array.required_monthly_test_range_strings).isEmpty() - || !channelManager.getCellBroadcastChannelRanges( - R.array.exercise_alert_range_strings).isEmpty() - || !channelManager.getCellBroadcastChannelRanges( - R.array.operator_defined_alert_range_strings).isEmpty() - || !channelManager.getCellBroadcastChannelRanges( - R.array.etws_test_alerts_range_strings).isEmpty(); - // Check if we want to hide the test alert toggle. - if (hideTestAlertMenu || !enableDevSettings || !isTestAlertsAvailable) { + if (!isTestAlertsToggleVisible(getContext())) { if (mTestCheckBox != null) { mAlertCategory.removePreference(mTestCheckBox); } @@ -550,6 +538,23 @@ public class CellBroadcastSettings extends Activity { } } + public static boolean isTestAlertsToggleVisible(Context context) { + CellBroadcastChannelManager channelManager = new CellBroadcastChannelManager(context, + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + Resources res = CellBroadcastSettings.getResources(context, + SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + boolean isTestAlertsAvailable = !channelManager.getCellBroadcastChannelRanges( + R.array.required_monthly_test_range_strings).isEmpty() + || !channelManager.getCellBroadcastChannelRanges( + R.array.exercise_alert_range_strings).isEmpty() + || !channelManager.getCellBroadcastChannelRanges( + R.array.operator_defined_alert_range_strings).isEmpty() + || !channelManager.getCellBroadcastChannelRanges( + R.array.etws_test_alerts_range_strings).isEmpty(); + + return res.getBoolean(R.bool.show_test_settings) && isTestAlertsAvailable; + } + public static boolean isFeatureEnabled(Context context, String feature, boolean defaultValue) { CarrierConfigManager configManager = (CarrierConfigManager) context.getSystemService(Context.CARRIER_CONFIG_SERVICE); |