Fix Carrier settings crash issue
When world_phone enabled, "carrier settings" option
present in Mobile Network Settings menu and if we
select on it there is a crash in PhoneApp.
To fix it, modify "enabled_networks_key" handling properly
to do not display "carrier settings" menu option when
config config_carrier_settings_enable is set to false
Change-Id: Ie5fc1f60872cbed7ad82098df01720b77d88b453
diff --git a/src/com/android/phone/CdmaOptions.java b/src/com/android/phone/CdmaOptions.java
index 3e3c8b5..8971fa4 100644
--- a/src/com/android/phone/CdmaOptions.java
+++ b/src/com/android/phone/CdmaOptions.java
@@ -43,6 +43,7 @@
private static final String BUTTON_CDMA_SYSTEM_SELECT_KEY = "cdma_system_select_key";
private static final String BUTTON_CDMA_SUBSCRIPTION_KEY = "cdma_subscription_key";
private static final String BUTTON_CDMA_ACTIVATE_DEVICE_KEY = "cdma_activate_device_key";
+ private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
private PreferenceActivity mPrefActivity;
private PreferenceScreen mPrefScreen;
@@ -83,6 +84,16 @@
mPrefScreen.removePreference(
mPrefScreen.findPreference(BUTTON_CDMA_ACTIVATE_DEVICE_KEY));
}
+
+ // Read platform settings for carrier settings
+ final boolean isCarrierSettingsEnabled = mPrefActivity.getResources().getBoolean(
+ R.bool.config_carrier_settings_enable);
+ if (!isCarrierSettingsEnabled) {
+ Preference pref = mPrefScreen.findPreference(BUTTON_CARRIER_SETTINGS_KEY);
+ if (pref != null) {
+ mPrefScreen.removePreference(pref);
+ }
+ }
}
private boolean deviceSupportsNvAndRuim() {
diff --git a/src/com/android/phone/GsmUmtsOptions.java b/src/com/android/phone/GsmUmtsOptions.java
index 6829dec..6791f27 100644
--- a/src/com/android/phone/GsmUmtsOptions.java
+++ b/src/com/android/phone/GsmUmtsOptions.java
@@ -36,6 +36,7 @@
private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key";
private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key";
+ private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
private PreferenceActivity mPrefActivity;
private PreferenceScreen mPrefScreen;
@@ -80,6 +81,16 @@
.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY));
}
}
+
+ // Read platform settings for carrier settings
+ final boolean isCarrierSettingsEnabled = mPrefActivity.getResources().getBoolean(
+ R.bool.config_carrier_settings_enable);
+ if (!isCarrierSettingsEnabled) {
+ Preference pref = mPrefScreen.findPreference(BUTTON_CARRIER_SETTINGS_KEY);
+ if (pref != null) {
+ mPrefScreen.removePreference(pref);
+ }
+ }
}
}
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index c225eb4..492ccc5 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -71,7 +71,6 @@
private static final String BUTTON_ROAMING_KEY = "button_roaming_key";
private static final String BUTTON_CDMA_LTE_DATA_SERVICE_KEY = "cdma_lte_data_service_key";
private static final String BUTTON_ENABLED_NETWORKS_KEY = "enabled_networks_key";
- private static final String BUTTON_CARRIER_SETTINGS_KEY = "carrier_settings_key";
static final int preferredNetworkMode = Phone.PREFERRED_NT_MODE;
@@ -333,16 +332,6 @@
android.util.Log.d(LOG_TAG, "keep ltePref");
}
- // Read platform settings for carrier settings
- final boolean isCarrierSettingsEnabled = getResources().getBoolean(
- R.bool.config_carrier_settings_enable);
- if (!isCarrierSettingsEnabled) {
- Preference pref = prefSet.findPreference(BUTTON_CARRIER_SETTINGS_KEY);
- if (pref != null) {
- prefSet.removePreference(pref);
- }
- }
-
ActionBar actionBar = getActionBar();
if (actionBar != null) {
// android.R.id.home will be triggered in onOptionsItemSelected()