Merge "Refactored area update info support"
diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java
index 710e5dd..c3d3547 100644
--- a/src/com/android/settings/deviceinfo/SimStatus.java
+++ b/src/com/android/settings/deviceinfo/SimStatus.java
@@ -16,6 +16,10 @@
package com.android.settings.deviceinfo;
+import static android.content.Context.CARRIER_CONFIG_SERVICE;
+import static android.content.Context.TELEPHONY_SERVICE;
+
+import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -58,9 +62,6 @@
import java.util.List;
-import static android.content.Context.CARRIER_CONFIG_SERVICE;
-import static android.content.Context.TELEPHONY_SERVICE;
-
/**
* Display the following information
@@ -69,7 +70,7 @@
* # Roaming
* # Device Id (IMEI in GSM and MEID in CDMA)
* # Network type
- * # Operator info (area info cell broadcast for Brazil)
+ * # Operator info (area update info cell broadcast)
* # Signal Strength
*
*/
@@ -87,18 +88,14 @@
private static final String KEY_IMEI = "imei";
private static final String KEY_IMEI_SV = "imei_sv";
private static final String KEY_ICCID = "iccid";
- private static final String COUNTRY_ABBREVIATION_BRAZIL = "br";
- static final String CB_AREA_INFO_RECEIVED_ACTION =
- "android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED";
+ static private final String CB_AREA_INFO_RECEIVED_ACTION =
+ "com.android.cellbroadcastreceiver.CB_AREA_INFO_RECEIVED";
- static final String GET_LATEST_CB_AREA_INFO_ACTION =
- "android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO";
+ static private final String GET_LATEST_CB_AREA_INFO_ACTION =
+ "com.android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO";
- // Require the sender to have this permission to prevent third-party spoofing.
- static final String CB_AREA_INFO_SENDER_PERMISSION =
- "android.permission.RECEIVE_EMERGENCY_BROADCAST";
-
+ static private final String CELL_BROADCAST_RECEIVER_APP = "com.android.cellbroadcastreceiver";
private TelephonyManager mTelephonyManager;
private CarrierConfigManager mCarrierConfigManager;
@@ -118,7 +115,9 @@
private List<SubscriptionInfo> mSelectableSubInfos;
private PhoneStateListener mPhoneStateListener;
- private BroadcastReceiver mAreaInfoReceiver = new BroadcastReceiver() {
+
+ // Once the cell broadcast configuration is moved into telephony framework,
+ private final BroadcastReceiver mAreaInfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
@@ -128,8 +127,7 @@
return;
}
CellBroadcastMessage cbMessage = (CellBroadcastMessage) extras.get("message");
- if (cbMessage != null && cbMessage.getServiceCategory() == 50
- && mSir.getSubscriptionId() == cbMessage.getSubId()) {
+ if (cbMessage != null && mSir.getSubscriptionId() == cbMessage.getSubId()) {
String latestAreaInfo = cbMessage.getMessageBody();
updateAreaInfo(latestAreaInfo);
}
@@ -216,11 +214,12 @@
if (mShowLatestAreaInfo) {
getContext().registerReceiver(mAreaInfoReceiver,
new IntentFilter(CB_AREA_INFO_RECEIVED_ACTION),
- CB_AREA_INFO_SENDER_PERMISSION, null);
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST, null);
// Ask CellBroadcastReceiver to broadcast the latest area info received
Intent getLatestIntent = new Intent(GET_LATEST_CB_AREA_INFO_ACTION);
+ getLatestIntent.setPackage(CELL_BROADCAST_RECEIVER_APP);
getContext().sendBroadcastAsUser(getLatestIntent, UserHandle.ALL,
- CB_AREA_INFO_SENDER_PERMISSION);
+ Manifest.permission.RECEIVE_EMERGENCY_BROADCAST);
}
}
}
@@ -381,11 +380,8 @@
private void updatePreference() {
if (mPhone.getPhoneType() != TelephonyManager.PHONE_TYPE_CDMA) {
- // only show area info when SIM country is Brazil
- if (COUNTRY_ABBREVIATION_BRAZIL.equals(mTelephonyManager.getSimCountryIso(
- mSir.getSubscriptionId()))) {
- mShowLatestAreaInfo = true;
- }
+ mShowLatestAreaInfo = Resources.getSystem().getBoolean(
+ com.android.internal.R.bool.config_showAreaUpdateInfoSettings);
}
PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(
mSir.getSubscriptionId());