summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Yu <jackyu@google.com>2015-07-24 03:26:05 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-24 03:26:05 +0000
commit63497cf0bea4a43732dbeb8dce45b62aa25087fa (patch)
treebf10f424f460c29ff07271b29e629f1f0ab850af
parentd561581a241b4952cce1a03ad710ba20c37872a2 (diff)
parent1571f35e5a9e67234e89def13e3c488106461785 (diff)
downloadandroid_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.
-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() {