diff options
Diffstat (limited to 'src/java/com/android/ims/ImsManager.java')
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 139 |
1 files changed, 81 insertions, 58 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index 31dd86f4..dc58813f 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -480,21 +480,28 @@ public class ImsManager { * */ public void setEnhanced4gLteModeSetting(boolean enabled) { + int subId = getSubId(); // If editable=false, we must keep default advanced 4G mode. if (!getBooleanCarrierConfig(CarrierConfigManager.KEY_EDITABLE_ENHANCED_4G_LTE_BOOL)) { enabled = getBooleanCarrierConfig( CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL); } - int prevSetting = SubscriptionManager.getIntegerSubscriptionProperty( - getSubId(), SubscriptionManager.ENHANCED_4G_MODE_ENABLED, - SUB_PROPERTY_NOT_INITIALIZED, mContext); + int prevSetting = SubscriptionManager.getIntegerSubscriptionProperty(subId, + SubscriptionManager.ENHANCED_4G_MODE_ENABLED, SUB_PROPERTY_NOT_INITIALIZED, + mContext); if (prevSetting != (enabled ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF)) { - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.ENHANCED_4G_MODE_ENABLED, booleanToPropertyString(enabled)); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.ENHANCED_4G_MODE_ENABLED, + booleanToPropertyString(enabled)); + } else { + loge("setEnhanced4gLteModeSetting: invalid sub id, can not set property in " + + " siminfo db."); + } if (isNonTtyOrTtyOnVolteEnabled()) { try { setAdvanced4GMode(enabled); @@ -760,8 +767,13 @@ public class ImsManager { * Change persistent VT enabled setting for slot. */ public void setVtSetting(boolean enabled) { - SubscriptionManager.setSubscriptionProperty(getSubId(), SubscriptionManager.VT_IMS_ENABLED, - booleanToPropertyString(enabled)); + int subId = getSubId(); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.VT_IMS_ENABLED, + booleanToPropertyString(enabled)); + } else { + loge("setVtSetting: sub id invalid, skip modifying vt state in subinfo db."); + } try { changeMmTelCapability(MmTelFeature.MmTelCapabilities.CAPABILITY_TYPE_VIDEO, @@ -871,12 +883,17 @@ public class ImsManager { * Change persistent WFC enabled setting for slot. */ public void setWfcSetting(boolean enabled) { - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_ENABLED, booleanToPropertyString(enabled)); + int subId = getSubId(); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_ENABLED, + booleanToPropertyString(enabled)); + } else { + loge("setWfcSetting: invalid sub id, can not set WFC setting in siminfo db"); + } TelephonyManager tm = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); - setWfcNonPersistent(enabled, getWfcMode(tm.isNetworkRoaming(getSubId()))); + setWfcNonPersistent(enabled, getWfcMode(tm.isNetworkRoaming(subId))); } /** @@ -952,8 +969,13 @@ public class ImsManager { public void setWfcMode(int wfcMode) { if (DBG) log("setWfcMode(i) - setting=" + wfcMode); - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_MODE, Integer.toString(wfcMode)); + int subId = getSubId(); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_MODE, + Integer.toString(wfcMode)); + } else { + loge("setWfcMode: invalid sub id, skip setting value in siminfo db"); + } setWfcModeInternal(wfcMode); } @@ -1047,14 +1069,19 @@ public class ImsManager { * @param roaming {@code false} for home network setting, {@code true} for roaming setting */ public void setWfcMode(int wfcMode, boolean roaming) { - if (!roaming) { - if (DBG) log("setWfcMode(i,b) - setting=" + wfcMode); - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_MODE, Integer.toString(wfcMode)); + int subId = getSubId(); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (!roaming) { + if (DBG) log("setWfcMode(i,b) - setting=" + wfcMode); + SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_MODE, + Integer.toString(wfcMode)); + } else { + if (DBG) log("setWfcMode(i,b) (roaming) - setting=" + wfcMode); + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.WFC_IMS_ROAMING_MODE, Integer.toString(wfcMode)); + } } else { - if (DBG) log("setWfcMode(i,b) (roaming) - setting=" + wfcMode); - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_ROAMING_MODE, Integer.toString(wfcMode)); + loge("setWfcMode(i,b): invalid sub id, skip setting setting in siminfo db"); } TelephonyManager tm = (TelephonyManager) @@ -1938,15 +1965,10 @@ public class ImsManager { * @return boolean value of corresponding key. */ private boolean getBooleanCarrierConfig(String key) { - int[] subIds = SubscriptionManager.getSubId(mPhoneId); - int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; - if (subIds != null && subIds.length >= 1) { - subId = subIds[0]; - } PersistableBundle b = null; if (mConfigManager != null) { // If an invalid subId is used, this bundle will contain default values. - b = mConfigManager.getConfigForSubId(subId); + b = mConfigManager.getConfigForSubId(getSubId()); } if (b != null) { return b.getBoolean(key); @@ -1963,15 +1985,10 @@ public class ImsManager { * @return integer value of corresponding key. */ private int getIntCarrierConfig(String key) { - int[] subIds = SubscriptionManager.getSubId(mPhoneId); - int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; - if (subIds != null && subIds.length >= 1) { - subId = subIds[0]; - } PersistableBundle b = null; if (mConfigManager != null) { // If an invalid subId is used, this bundle will contain default values. - b = mConfigManager.getConfigForSubId(subId); + b = mConfigManager.getConfigForSubId(getSubId()); } if (b != null) { return b.getInt(key); @@ -2306,33 +2323,39 @@ public class ImsManager { * @hide */ public void factoryReset() { - // Set VoLTE to default - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.ENHANCED_4G_MODE_ENABLED, - booleanToPropertyString(getBooleanCarrierConfig( - CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL))); - - // Set VoWiFi to default - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_ENABLED, - booleanToPropertyString(getBooleanCarrierConfig( - CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL))); - - // Set VoWiFi mode to default - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_MODE, - Integer.toString(getIntCarrierConfig( - CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT))); - - // Set VoWiFi roaming to default - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.WFC_IMS_ROAMING_ENABLED, - booleanToPropertyString(getBooleanCarrierConfig( - CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_ENABLED_BOOL))); - - // Set VT to default - SubscriptionManager.setSubscriptionProperty(getSubId(), - SubscriptionManager.VT_IMS_ENABLED, booleanToPropertyString(true)); + int subId = getSubId(); + if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + // Set VoLTE to default + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.ENHANCED_4G_MODE_ENABLED, + booleanToPropertyString(getBooleanCarrierConfig( + CarrierConfigManager.KEY_ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL))); + + // Set VoWiFi to default + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.WFC_IMS_ENABLED, + booleanToPropertyString(getBooleanCarrierConfig( + CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_ENABLED_BOOL))); + + // Set VoWiFi mode to default + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.WFC_IMS_MODE, + Integer.toString(getIntCarrierConfig( + CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_MODE_INT))); + + // Set VoWiFi roaming to default + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.WFC_IMS_ROAMING_ENABLED, + booleanToPropertyString(getBooleanCarrierConfig( + CarrierConfigManager.KEY_CARRIER_DEFAULT_WFC_IMS_ROAMING_ENABLED_BOOL))); + + + // Set VT to default + SubscriptionManager.setSubscriptionProperty(subId, + SubscriptionManager.VT_IMS_ENABLED, booleanToPropertyString(true)); + } else { + loge("factoryReset: invalid sub id, can not reset siminfo db settings"); + } // Push settings to ImsConfig updateImsServiceConfig(true); |