From 3f85c34423cf35cf92a4c1f374689959dc0ed55e Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Thu, 24 Sep 2015 14:11:16 -0700 Subject: Fixed that "Turn on notification" does not work. We should set the preference change listener if turn on notification option is available. Previously we only do that when developer options is turned on. bug: 23886750 Change-Id: I0850d39c0478f6772fbe89aeda0faa3894526b36 --- .../cellbroadcastreceiver/CellBroadcastAlertService.java | 16 +++++++++++++--- .../cellbroadcastreceiver/CellBroadcastSettings.java | 16 ++++++++-------- tests/AndroidManifest.xml | 3 ++- 3 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java index c51dc392..abf553e0 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java @@ -270,15 +270,24 @@ public class CellBroadcastAlertService extends Service { message.getSubId(), SubscriptionManager.CB_ETWS_TEST_ALERT, false, this); } + if (message.isEtwsMessage()) { + // ETWS messages. + // Turn on/off emergency notifications is the only way to turn on/off ETWS messages. + return SubscriptionManager.getBooleanSubscriptionProperty(message.getSubId(), + SubscriptionManager.CB_EMERGENCY_ALERT, true, this); + } + if (message.isCmasMessage()) { switch (message.getCmasMessageClass()) { case SmsCbCmasInfo.CMAS_CLASS_EXTREME_THREAT: return SubscriptionManager.getBooleanSubscriptionProperty( - message.getSubId(), SubscriptionManager.CB_EXTREME_THREAT_ALERT, true, this); + message.getSubId(), + SubscriptionManager.CB_EXTREME_THREAT_ALERT, true, this); case SmsCbCmasInfo.CMAS_CLASS_SEVERE_THREAT: return SubscriptionManager.getBooleanSubscriptionProperty( - message.getSubId(), SubscriptionManager.CB_SEVERE_THREAT_ALERT, true, this); + message.getSubId(), + SubscriptionManager.CB_SEVERE_THREAT_ALERT, true, this); case SmsCbCmasInfo.CMAS_CLASS_CHILD_ABDUCTION_EMERGENCY: return SubscriptionManager.getBooleanSubscriptionProperty( @@ -289,7 +298,8 @@ public class CellBroadcastAlertService extends Service { case SmsCbCmasInfo.CMAS_CLASS_OPERATOR_DEFINED_USE: return !forceDisableEtwsCmasTest && SubscriptionManager.getBooleanSubscriptionProperty( - message.getSubId(), SubscriptionManager.CB_CMAS_TEST_ALERT, false, this); + message.getSubId(), + SubscriptionManager.CB_CMAS_TEST_ALERT, false, this); default: return true; // presidential-level CMAS alerts are always enabled } diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java index 54dce748..2e83dbcc 100644 --- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java +++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java @@ -327,9 +327,8 @@ public class CellBroadcastSettings extends PreferenceActivity { boolean emergencyAlertOnOffOptionEnabled = isEmergencyAlertOnOffOptionEnabled(this, mSir.getSubscriptionId()); - // Show alert settings and ETWS categories for ETWS builds and developer mode. - if (enableDevSettings || showEtwsSettings) { - // enable/disable all alerts + if (enableDevSettings || showEtwsSettings || emergencyAlertOnOffOptionEnabled) { + // enable/disable all alerts except CMAS presidential alerts. if (mEmergencyCheckBox != null) { if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(), SubscriptionManager.CB_EMERGENCY_ALERT, true, this)) { @@ -339,6 +338,12 @@ public class CellBroadcastSettings extends PreferenceActivity { } mEmergencyCheckBox.setOnPreferenceChangeListener(startConfigServiceListener); } + } else { + mAlertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS)); + } + + // Show alert settings and ETWS categories for ETWS builds and developer mode. + if (enableDevSettings || showEtwsSettings) { // alert sound duration queryReturnVal = SubscriptionManager.getIntegerSubscriptionProperty( @@ -377,11 +382,6 @@ public class CellBroadcastSettings extends PreferenceActivity { } else { // Remove general emergency alert preference items (not shown for CMAS builds). - // Some carriers would like to have "Turn on Notifications" option always show up - // regardless of developer options turned on or not. - if (!emergencyAlertOnOffOptionEnabled) - mAlertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS)); - mAlertCategory.removePreference(findPreference(KEY_ALERT_SOUND_DURATION)); mAlertCategory.removePreference(findPreference(KEY_ENABLE_ALERT_SPEECH)); // Remove ETWS test preference category. diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml index f3bfd869..41a41607 100644 --- a/tests/AndroidManifest.xml +++ b/tests/AndroidManifest.xml @@ -16,7 +16,8 @@ + package="com.android.cellbroadcastreceiver.tests" + android:sharedUserId="android.uid.phone"> -- cgit v1.2.3