diff options
author | Tyler Gunn <tgunn@google.com> | 2018-09-25 08:46:38 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-09-25 08:46:38 -0700 |
commit | fd47d2ecabc8cd3efbb6fc6f584d974312a0453f (patch) | |
tree | e5a542dfd44be4f307d323bfff02a2805837745f | |
parent | f38de0d6f5de217367bacd844c1b1f9364df149b (diff) | |
parent | eb338034f76f6e0589d8f6a5d3e1b6c03becf792 (diff) | |
download | ims-fd47d2ecabc8cd3efbb6fc6f584d974312a0453f.tar.gz |
Speculative fix for ImsManager crashes.
am: eb338034f7
Change-Id: Ida64606ed5a75cb39f88fc43c7b0aa82def4d6f3
-rw-r--r-- | src/java/com/android/ims/ImsManager.java | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/src/java/com/android/ims/ImsManager.java b/src/java/com/android/ims/ImsManager.java index d4198335..f138d456 100644 --- a/src/java/com/android/ims/ImsManager.java +++ b/src/java/com/android/ims/ImsManager.java @@ -499,13 +499,13 @@ public class ImsManager { if (prevSetting != (enabled ? ImsConfig.FeatureValueConstants.ON : ImsConfig.FeatureValueConstants.OFF)) { - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (isSubIdValid(subId)) { SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.ENHANCED_4G_MODE_ENABLED, booleanToPropertyString(enabled)); } else { loge("setEnhanced4gLteModeSetting: invalid sub id, can not set property in " + - " siminfo db."); + " siminfo db; subId=" + subId); } if (isNonTtyOrTtyOnVolteEnabled()) { try { @@ -773,11 +773,12 @@ public class ImsManager { */ public void setVtSetting(boolean enabled) { int subId = getSubId(); - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (isSubIdValid(subId)) { SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.VT_IMS_ENABLED, booleanToPropertyString(enabled)); } else { - loge("setVtSetting: sub id invalid, skip modifying vt state in subinfo db."); + loge("setVtSetting: sub id invalid, skip modifying vt state in subinfo db; subId=" + + subId); } try { @@ -889,11 +890,12 @@ public class ImsManager { */ public void setWfcSetting(boolean enabled) { int subId = getSubId(); - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (isSubIdValid(subId)) { SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_ENABLED, booleanToPropertyString(enabled)); } else { - loge("setWfcSetting: invalid sub id, can not set WFC setting in siminfo db"); + loge("setWfcSetting: invalid sub id, can not set WFC setting in siminfo db; subId=" + + subId); } TelephonyManager tm = (TelephonyManager) @@ -975,11 +977,11 @@ public class ImsManager { if (DBG) log("setWfcMode(i) - setting=" + wfcMode); int subId = getSubId(); - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (isSubIdValid(subId)) { SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_MODE, Integer.toString(wfcMode)); } else { - loge("setWfcMode: invalid sub id, skip setting value in siminfo db"); + loge("setWfcMode: invalid sub id, skip setting value in siminfo db; subId=" + subId); } setWfcModeInternal(wfcMode); @@ -1075,7 +1077,7 @@ public class ImsManager { */ public void setWfcMode(int wfcMode, boolean roaming) { int subId = getSubId(); - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (isSubIdValid(subId)) { if (!roaming) { if (DBG) log("setWfcMode(i,b) - setting=" + wfcMode); SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.WFC_IMS_MODE, @@ -1086,7 +1088,8 @@ public class ImsManager { SubscriptionManager.WFC_IMS_ROAMING_MODE, Integer.toString(wfcMode)); } } else { - loge("setWfcMode(i,b): invalid sub id, skip setting setting in siminfo db"); + loge("setWfcMode(i,b): invalid sub id, skip setting setting in siminfo db; subId=" + + subId); } TelephonyManager tm = (TelephonyManager) @@ -2342,7 +2345,7 @@ public class ImsManager { */ public void factoryReset() { int subId = getSubId(); - if (subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + if (isSubIdValid(subId)) { // Set VoLTE to default SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.ENHANCED_4G_MODE_ENABLED, @@ -2372,7 +2375,7 @@ public class ImsManager { SubscriptionManager.setSubscriptionProperty(subId, SubscriptionManager.VT_IMS_ENABLED, booleanToPropertyString(true)); } else { - loge("factoryReset: invalid sub id, can not reset siminfo db settings"); + loge("factoryReset: invalid sub id, can not reset siminfo db settings; subId=" + subId); } // Push settings to ImsConfig @@ -2432,4 +2435,15 @@ public class ImsManager { pw.println(" isWfcProvisionedOnDevice = " + isWfcProvisionedOnDevice()); pw.flush(); } + + /** + * Determines if a sub id is valid. + * Mimics the logic in SubscriptionController.validateSubId. + * @param subId The sub id to check. + * @return {@code true} if valid, {@code false} otherwise. + */ + private boolean isSubIdValid(int subId) { + return subId != SubscriptionManager.INVALID_SUBSCRIPTION_ID && + subId != SubscriptionManager.DEFAULT_SUBSCRIPTION_ID; + } } |