Replace the default value of Enhanced 4G LTE mode with to carrier config
am: 2335b7020d
Change-Id: I1ec7e2e21ed2a5f73e25c8e2d50dd306ba32c8dc
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java
index 0e611e4..1a53ff4 100644
--- a/src/java/com/android/ims/ImsManager.java
+++ b/src/java/com/android/ims/ImsManager.java
@@ -279,20 +279,27 @@
}
/**
- * Returns the user configuration of Enhanced 4G LTE Mode setting for slot.
+ * Returns the user configuration of Enhanced 4G LTE Mode setting for slot. If the option is
+ * not editable ({@link CarrierConfigManager#KEY_EDITABLE_ENHANCED_4G_LTE_BOOL} is false),
+ * this method will return default value specified by
+ * {@link CarrierConfigManager#KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL}.
*/
public boolean isEnhanced4gLteModeSettingEnabledByUser() {
- // If user can't edit Enhanced 4G LTE Mode, it assumes Enhanced 4G LTE Mode is always true.
- // If user changes SIM from editable mode to uneditable mode, need to return true.
+ // If user can't edit Enhanced 4G LTE Mode, it assumes Enhanced 4G LTE Mode is default
+ // value.
+ // If user changes SIM from editable mode to uneditable mode, need to return default value.
+ int defaultValue = getBooleanCarrierConfig(
+ CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL) ?
+ ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF;
if (!getBooleanCarrierConfig(
CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL)) {
- return true;
+ return (defaultValue == ImsConfig.FeatureValueConstants.ON);
}
int enabled = android.provider.Settings.Global.getInt(
mContext.getContentResolver(),
android.provider.Settings.Global.ENHANCED_4G_MODE_ENABLED,
- ImsConfig.FeatureValueConstants.ON);
- return (enabled == 1);
+ defaultValue);
+ return (enabled == ImsConfig.FeatureValueConstants.ON);
}
/**
@@ -311,15 +318,21 @@
}
/**
- * Change persistent Enhanced 4G LTE Mode setting. If the the option is not editable
+ * Change persistent Enhanced 4G LTE Mode setting. If the option is not editable
* ({@link CarrierConfigManager#KEY_EDITABLE_ENHANCED_4G_LTE_BOOL} is false), this method will
- * always set the setting to true.
+ * set the setting to the default value specified by
+ * {@link CarrierConfigManager#KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL}.
*
*/
public void setEnhanced4gLteModeSetting(boolean enabled) {
- // If false, we must always keep advanced 4G mode set to true (1).
- int value = getBooleanCarrierConfig(
- CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL) ? (enabled ? 1: 0) : 1;
+ int value = enabled ? ImsConfig.FeatureValueConstants.ON :
+ ImsConfig.FeatureValueConstants.OFF;
+ // If editable=false, we must keep default advanced 4G mode.
+ if (!getBooleanCarrierConfig(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL)) {
+ value = getBooleanCarrierConfig(
+ CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL) ?
+ ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF;
+ }
try {
int prevSetting = android.provider.Settings.Global.getInt(mContext.getContentResolver(),
@@ -336,7 +349,7 @@
android.provider.Settings.Global.ENHANCED_4G_MODE_ENABLED, value);
if (isNonTtyOrTtyOnVolteEnabled()) {
try {
- setAdvanced4GMode(enabled);
+ setAdvanced4GMode(value == ImsConfig.FeatureValueConstants.ON);
} catch (ImsException ie) {
// do nothing
}
@@ -2388,10 +2401,10 @@
* @hide
*/
public void factoryReset() {
- // Set VoLTE to default
- android.provider.Settings.Global.putInt(mContext.getContentResolver(),
- android.provider.Settings.Global.ENHANCED_4G_MODE_ENABLED,
- ImsConfig.FeatureValueConstants.ON);
+ // Delete VoLTE row to retrieve the default value.
+ mContext.getContentResolver().delete(
+ Settings.Global.getUriFor(Settings.Global.ENHANCED_4G_MODE_ENABLED),
+ null, null);
// Set VoWiFi to default
android.provider.Settings.Global.putInt(mContext.getContentResolver(),