diff options
author | Jack Yu <jackyu@google.com> | 2015-07-24 03:26:05 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-24 03:26:05 +0000 |
commit | 63497cf0bea4a43732dbeb8dce45b62aa25087fa (patch) | |
tree | bf10f424f460c29ff07271b29e629f1f0ab850af | |
parent | d561581a241b4952cce1a03ad710ba20c37872a2 (diff) | |
parent | 1571f35e5a9e67234e89def13e3c488106461785 (diff) | |
download | android_packages_apps_CellBroadcastReceiver-63497cf0bea4a43732dbeb8dce45b62aa25087fa.tar.gz android_packages_apps_CellBroadcastReceiver-63497cf0bea4a43732dbeb8dce45b62aa25087fa.tar.bz2 android_packages_apps_CellBroadcastReceiver-63497cf0bea4a43732dbeb8dce45b62aa25087fa.zip |
am 1571f35e: am 0542672d: am dd9555e7: Allow carriers to force disable ETWS/CMAS test messages.
* commit '1571f35e5a9e67234e89def13e3c488106461785':
Allow carriers to force disable ETWS/CMAS test messages.
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() { |