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
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
index 535a183..ef4ead8 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
@@ -270,15 +270,24 @@
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 @@
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 54dce74..2e83dbc 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
@@ -327,9 +327,8 @@
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 @@
}
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 @@
} 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 f3bfd86..41a4160 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -16,7 +16,8 @@
<!-- package name must be unique so suffix with "tests" so package loader doesn't ignore us -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.cellbroadcastreceiver.tests">
+ package="com.android.cellbroadcastreceiver.tests"
+ android:sharedUserId="android.uid.phone">
<!-- Test Apk is signed with platform key in order to use this permission. -->
<uses-permission android:name="android.permission.BROADCAST_SMS"/>