summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorJack Yu <jackyu@google.com>2015-07-22 13:33:10 -0700
committerJack Yu <jackyu@google.com>2015-07-23 05:20:19 +0000
commitdd9555e7e5eb29852576197de1c61fa99007ba34 (patch)
treed70bca7724caa74c10423f27eafc9f848500b4a5 /src/com/android
parent26f398e2862c80a19fd32d8b1fd74cc9751c129c (diff)
downloadandroid_packages_apps_CellBroadcastReceiver-dd9555e7e5eb29852576197de1c61fa99007ba34.tar.gz
android_packages_apps_CellBroadcastReceiver-dd9555e7e5eb29852576197de1c61fa99007ba34.tar.bz2
android_packages_apps_CellBroadcastReceiver-dd9555e7e5eb29852576197de1c61fa99007ba34.zip
Allow carriers to force disable ETWS/CMAS test messages.
This feature can be enabled in carrier config XML. When enabled, the user will not see ETWS/CMAS enable/disable option in emergency broadcast preference menu. bug: 22396039 Change-Id: I67b09e283a85f2af682fa7f2d1cd81d7d7db5cf2
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java14
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java11
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java2
-rw-r--r--src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java48
4 files changed, 64 insertions, 11 deletions
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
index 072b0782..f646abdf 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastAlertService.java
@@ -24,12 +24,10 @@ import android.app.Service;
import android.app.ActivityManagerNative;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
import android.os.UserHandle;
-import android.preference.PreferenceManager;
import android.provider.Telephony;
import android.telephony.CellBroadcastMessage;
import android.telephony.SmsCbCmasInfo;
@@ -254,8 +252,14 @@ public class CellBroadcastAlertService extends Service {
* @return true if the user has enabled this message type; false otherwise
*/
private boolean isMessageEnabledByUser(CellBroadcastMessage message) {
+
+ // Check if ETWS/CMAS test message is forced to disabled on the device.
+ boolean forceDisableEtwsCmasTest =
+ CellBroadcastSettings.isEtwsCmasTestMessageForcedDisabled(this, message.getSubId());
+
if (message.isEtwsTestMessage()) {
- return SubscriptionManager.getBooleanSubscriptionProperty(
+ return !forceDisableEtwsCmasTest &&
+ SubscriptionManager.getBooleanSubscriptionProperty(
message.getSubId(), SubscriptionManager.CB_ETWS_TEST_ALERT, false, this);
}
@@ -276,9 +280,9 @@ public class CellBroadcastAlertService extends Service {
case SmsCbCmasInfo.CMAS_CLASS_REQUIRED_MONTHLY_TEST:
case SmsCbCmasInfo.CMAS_CLASS_CMAS_EXERCISE:
case SmsCbCmasInfo.CMAS_CLASS_OPERATOR_DEFINED_USE:
- return SubscriptionManager.getBooleanSubscriptionProperty(
+ return !forceDisableEtwsCmasTest &&
+ SubscriptionManager.getBooleanSubscriptionProperty(
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/CellBroadcastConfigService.java b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
index 6c5a7d32..09b56ef8 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastConfigService.java
@@ -176,7 +176,13 @@ public class CellBroadcastConfigService extends IntentService {
SubscriptionManager.CB_CHANNEL_50_ALERT, true, this);
// Note: ETWS is for 3GPP only
- boolean enableEtwsTestAlerts = SubscriptionManager.getBooleanSubscriptionProperty(
+
+ // Check if ETWS/CMAS test message is forced disabled on the device.
+ boolean forceDisableEtwsCmasTest =
+ CellBroadcastSettings.isEtwsCmasTestMessageForcedDisabled(this, subId);
+
+ boolean enableEtwsTestAlerts = !forceDisableEtwsCmasTest &&
+ SubscriptionManager.getBooleanSubscriptionProperty(
subId, SubscriptionManager.CB_ETWS_TEST_ALERT, false, this);
boolean enableCmasExtremeAlerts = SubscriptionManager
@@ -189,7 +195,8 @@ public class CellBroadcastConfigService extends IntentService {
boolean enableCmasAmberAlerts = SubscriptionManager.getBooleanSubscriptionProperty(
subId, SubscriptionManager.CB_AMBER_ALERT, true, this);
- boolean enableCmasTestAlerts = SubscriptionManager.getBooleanSubscriptionProperty(
+ boolean enableCmasTestAlerts = !forceDisableEtwsCmasTest &&
+ SubscriptionManager.getBooleanSubscriptionProperty(
subId, SubscriptionManager.CB_CMAS_TEST_ALERT, false, this);
// set up broadcast ID ranges to be used for each category
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
index 42cf053b..f255f638 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastReceiver.java
@@ -46,7 +46,7 @@ import java.util.List;
public class CellBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "CellBroadcastReceiver";
- static final boolean DBG = true; // STOPSHIP: change to false before ship
+ static final boolean DBG = false; // STOPSHIP: change to false before ship
private static int mServiceState = -1;
private static final String GET_LATEST_CB_AREA_INFO_ACTION =
"android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO";
diff --git a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
index 10cfa09d..02e1adcd 100644
--- a/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
+++ b/src/com/android/cellbroadcastreceiver/CellBroadcastSettings.java
@@ -18,6 +18,7 @@ package com.android.cellbroadcastreceiver;
import android.content.Context;
import android.os.Bundle;
+import android.os.PersistableBundle;
import android.os.UserManager;
import android.preference.CheckBoxPreference;
import android.preference.ListPreference;
@@ -26,6 +27,7 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceScreen;
import android.provider.Settings;
+import android.telephony.CarrierConfigManager;
import android.telephony.TelephonyManager;
import android.telephony.SubscriptionManager;
import android.telephony.SubscriptionInfo;
@@ -320,6 +322,9 @@ public class CellBroadcastSettings extends PreferenceActivity {
}
});
+ boolean forceDisableEtwsCmasTest =
+ isEtwsCmasTestMessageForcedDisabled(this, mSir.getSubscriptionId());
+
// Show alert settings and ETWS categories for ETWS builds and developer mode.
if (enableDevSettings || showEtwsSettings) {
// enable/disable all alerts
@@ -354,12 +359,25 @@ public class CellBroadcastSettings extends PreferenceActivity {
return true;
}
});
+ if (forceDisableEtwsCmasTest) {
+ // Remove ETWS test preference.
+ prefScreen.removePreference(findPreference(KEY_CATEGORY_ETWS_SETTINGS));
+
+ PreferenceCategory devSettingCategory =
+ (PreferenceCategory) findPreference(KEY_CATEGORY_DEV_SETTINGS);
+
+ // Remove CMAS test preference.
+ if (devSettingCategory != null) {
+ devSettingCategory.removePreference(
+ findPreference(KEY_ENABLE_CMAS_TEST_ALERTS));
+ }
+ }
} else {
// Remove general emergency alert preference items (not shown for CMAS builds).
mAlertCategory.removePreference(findPreference(KEY_ENABLE_EMERGENCY_ALERTS));
mAlertCategory.removePreference(findPreference(KEY_ALERT_SOUND_DURATION));
mAlertCategory.removePreference(findPreference(KEY_ENABLE_ALERT_SPEECH));
- // Remove ETWS preference category.
+ // Remove ETWS test preference category.
prefScreen.removePreference(findPreference(KEY_CATEGORY_ETWS_SETTINGS));
}
@@ -456,7 +474,8 @@ public class CellBroadcastSettings extends PreferenceActivity {
}
if (mEtwsTestCheckBox != null) {
- if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ if (!forceDisableEtwsCmasTest &&
+ SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
SubscriptionManager.CB_ETWS_TEST_ALERT, false, this)) {
mEtwsTestCheckBox.setChecked(true);
} else {
@@ -501,7 +520,8 @@ public class CellBroadcastSettings extends PreferenceActivity {
}
if (mCmasCheckBox != null) {
- if (SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
+ if (!forceDisableEtwsCmasTest &&
+ SubscriptionManager.getBooleanSubscriptionProperty(mSir.getSubscriptionId(),
SubscriptionManager.CB_CMAS_TEST_ALERT, false, this)) {
mCmasCheckBox.setChecked(true);
} else {
@@ -510,7 +530,29 @@ public class CellBroadcastSettings extends PreferenceActivity {
mCmasCheckBox.setOnPreferenceChangeListener(startConfigServiceListener);
}
}
+ }
+
+ // Check if ETWS/CMAS test message is forced disabled on the device.
+ public static boolean isEtwsCmasTestMessageForcedDisabled(Context context, int subId) {
+
+ if (context == null) {
+ 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);
+ }
+ }
+ return false;
}
private OnTabChangeListener mTabListener = new OnTabChangeListener() {