Loading services/core/java/com/android/server/MmsServiceBroker.java +17 −5 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server; package com.android.server; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import android.Manifest; import android.Manifest; import android.app.AppOpsManager; import android.app.AppOpsManager; import android.app.PendingIntent; import android.app.PendingIntent; Loading @@ -37,6 +39,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserHandle; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingService; import android.telephony.SmsManager; import android.telephony.SmsManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.util.Slog; import android.util.Slog; Loading Loading @@ -512,11 +515,11 @@ public class MmsServiceBroker extends SystemService { // Grant permission for the carrier app. // Grant permission for the carrier app. Intent intent = new Intent(action); Intent intent = new Intent(action); TelephonyManager telephonyManager = TelephonyManager telephonyManager = (TelephonyManager) (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); mContext.getSystemService(Context.TELEPHONY_SERVICE); List<String> carrierPackages = List<String> carrierPackages = telephonyManager telephonyManager.getCarrierPackageNamesForIntentAndPhone( .getCarrierPackageNamesForIntentAndPhone( intent, SubscriptionManager.getPhoneId(subId)); intent, getPhoneIdFromSubId(subId)); if (carrierPackages != null && carrierPackages.size() == 1) { if (carrierPackages != null && carrierPackages.size() == 1) { LocalServices.getService(UriGrantsManagerInternal.class) LocalServices.getService(UriGrantsManagerInternal.class) .grantUriPermissionFromIntent(callingUid, carrierPackages.get(0), .grantUriPermissionFromIntent(callingUid, carrierPackages.get(0), Loading @@ -528,4 +531,13 @@ public class MmsServiceBroker extends SystemService { return contentUri; return contentUri; } } } } private int getPhoneIdFromSubId(int subId) { SubscriptionManager subManager = (SubscriptionManager) mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); if (subManager == null) return INVALID_SIM_SLOT_INDEX; SubscriptionInfo info = subManager.getActiveSubscriptionInfo(subId); if (info == null) return INVALID_SIM_SLOT_INDEX; return info.getSimSlotIndex(); } } } services/core/java/com/android/server/TelephonyRegistry.java +30 −14 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server; package com.android.server; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED; import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_DATA; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_DATA; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_VOICE; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_VOICE; Loading Loading @@ -57,6 +58,7 @@ import android.telephony.PreciseDisconnectCause; import android.telephony.Rlog; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.telephony.data.ApnSetting; Loading Loading @@ -95,7 +97,7 @@ import java.util.NoSuchElementException; * and 15973975 by saving the phoneId of the registrant and then using the * and 15973975 by saving the phoneId of the registrant and then using the * phoneId when deciding to to make a callback. This is necessary because * phoneId when deciding to to make a callback. This is necessary because * a subId changes from to a dummy value when a SIM is removed and thus won't * a subId changes from to a dummy value when a SIM is removed and thus won't * compare properly. Because SubscriptionManager.getPhoneId(int subId) handles * compare properly. Because getPhoneIdFromSubId(int subId) handles * the dummy value conversion we properly do the callbacks. * the dummy value conversion we properly do the callbacks. * * * Eventually we may want to remove the notion of dummy value but for now this * Eventually we may want to remove the notion of dummy value but for now this Loading Loading @@ -128,7 +130,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; int phoneId = SubscriptionManager.INVALID_PHONE_INDEX; int phoneId = SubscriptionManager.INVALID_SIM_SLOT_INDEX; boolean matchPhoneStateListenerEvent(int events) { boolean matchPhoneStateListenerEvent(int events) { return (callback != null) && ((events & this.events) != 0); return (callback != null) && ((events & this.events) != 0); Loading Loading @@ -226,7 +228,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultPhoneId = SubscriptionManager.INVALID_PHONE_INDEX; private int mDefaultPhoneId = SubscriptionManager.INVALID_SIM_SLOT_INDEX; private int[] mRingingCallState; private int[] mRingingCallState; Loading Loading @@ -355,7 +357,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { SubscriptionManager.getDefaultSubscriptionId()); SubscriptionManager.getDefaultSubscriptionId()); int newDefaultPhoneId = intent.getIntExtra( int newDefaultPhoneId = intent.getIntExtra( SubscriptionManager.EXTRA_SLOT_INDEX, SubscriptionManager.EXTRA_SLOT_INDEX, SubscriptionManager.getPhoneId(newDefaultSubId)); getPhoneIdFromSubId(newDefaultSubId)); if (DBG) { if (DBG) { log("onReceive:current mDefaultSubId=" + mDefaultSubId log("onReceive:current mDefaultSubId=" + mDefaultSubId + " current mDefaultPhoneId=" + mDefaultPhoneId + " current mDefaultPhoneId=" + mDefaultPhoneId Loading Loading @@ -751,7 +753,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { return; return; } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { // register // register IBinder b = callback.asBinder(); IBinder b = callback.asBinder(); Loading Loading @@ -1077,7 +1079,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { // Called only by Telecomm to communicate call state across different phone accounts. So // Called only by Telecomm to communicate call state across different phone accounts. So // there is no need to add a valid subId or slotId. // there is no need to add a valid subId or slotId. broadcastCallStateChanged(state, phoneNumber, broadcastCallStateChanged(state, phoneNumber, SubscriptionManager.INVALID_PHONE_INDEX, SubscriptionManager.INVALID_SIM_SLOT_INDEX, SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID); } } Loading Loading @@ -1301,7 +1303,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { synchronized (mRecords) { synchronized (mRecords) { mCarrierNetworkChangeState = active; mCarrierNetworkChangeState = active; for (int subId : subIds) { for (int subId : subIds) { int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); if (VDBG) { if (VDBG) { log("notifyCarrierNetworkChange: active=" + active + "subId: " + subId); log("notifyCarrierNetworkChange: active=" + active + "subId: " + subId); Loading Loading @@ -1334,7 +1336,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyCellInfoForSubscriber: subId=" + subId log("notifyCellInfoForSubscriber: subId=" + subId + " cellInfo=" + cellInfo); + " cellInfo=" + cellInfo); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mCellInfo.set(phoneId, cellInfo); mCellInfo.set(phoneId, cellInfo); Loading Loading @@ -1425,7 +1427,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyCallForwardingChangedForSubscriber: subId=" + subId log("notifyCallForwardingChangedForSubscriber: subId=" + subId + " cfi=" + cfi); + " cfi=" + cfi); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mCallForwarding[phoneId] = cfi; mCallForwarding[phoneId] = cfi; Loading Loading @@ -1453,7 +1455,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (!checkNotifyPermission("notifyDataActivity()" )) { if (!checkNotifyPermission("notifyDataActivity()" )) { return; return; } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mDataActivity[phoneId] = state; mDataActivity[phoneId] = state; Loading Loading @@ -1626,7 +1628,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyCellLocationForSubscriber: subId=" + subId log("notifyCellLocationForSubscriber: subId=" + subId + " cellLocation=" + cellLocation); + " cellLocation=" + cellLocation); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mCellLocation[phoneId] = cellLocation; mCellLocation[phoneId] = cellLocation; Loading Loading @@ -1735,7 +1737,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (!checkNotifyPermission("notifyImsCallDisconnectCause()")) { if (!checkNotifyPermission("notifyImsCallDisconnectCause()")) { return; return; } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mImsReasonInfo.set(phoneId, imsReasonInfo); mImsReasonInfo.set(phoneId, imsReasonInfo); Loading Loading @@ -1802,7 +1804,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (VDBG) { if (VDBG) { log("notifySrvccStateChanged: subId=" + subId + " srvccState=" + state); log("notifySrvccStateChanged: subId=" + subId + " srvccState=" + state); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mSrvccState[phoneId] = state; mSrvccState[phoneId] = state; Loading Loading @@ -2208,7 +2210,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); } } // If the phoneId is invalid, the broadcast is for overall call state. // If the phoneId is invalid, the broadcast is for overall call state. if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) { if (phoneId != SubscriptionManager.INVALID_SIM_SLOT_INDEX) { intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId); intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId); } } Loading Loading @@ -2673,4 +2675,18 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { private static CallQuality createCallQuality() { private static CallQuality createCallQuality() { return new CallQuality(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return new CallQuality(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } } private int getPhoneIdFromSubId(int subId) { SubscriptionManager subManager = (SubscriptionManager) mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); if (subManager == null) return INVALID_SIM_SLOT_INDEX; if (subId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) { subId = SubscriptionManager.getDefaultSubscriptionId(); } SubscriptionInfo info = subManager.getActiveSubscriptionInfo(subId); if (info == null) return INVALID_SIM_SLOT_INDEX; return info.getSimSlotIndex(); } } } Loading
services/core/java/com/android/server/MmsServiceBroker.java +17 −5 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,8 @@ package com.android.server; package com.android.server; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import android.Manifest; import android.Manifest; import android.app.AppOpsManager; import android.app.AppOpsManager; import android.app.PendingIntent; import android.app.PendingIntent; Loading @@ -37,6 +39,7 @@ import android.os.SystemClock; import android.os.UserHandle; import android.os.UserHandle; import android.service.carrier.CarrierMessagingService; import android.service.carrier.CarrierMessagingService; import android.telephony.SmsManager; import android.telephony.SmsManager; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.util.Slog; import android.util.Slog; Loading Loading @@ -512,11 +515,11 @@ public class MmsServiceBroker extends SystemService { // Grant permission for the carrier app. // Grant permission for the carrier app. Intent intent = new Intent(action); Intent intent = new Intent(action); TelephonyManager telephonyManager = TelephonyManager telephonyManager = (TelephonyManager) (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); mContext.getSystemService(Context.TELEPHONY_SERVICE); List<String> carrierPackages = List<String> carrierPackages = telephonyManager telephonyManager.getCarrierPackageNamesForIntentAndPhone( .getCarrierPackageNamesForIntentAndPhone( intent, SubscriptionManager.getPhoneId(subId)); intent, getPhoneIdFromSubId(subId)); if (carrierPackages != null && carrierPackages.size() == 1) { if (carrierPackages != null && carrierPackages.size() == 1) { LocalServices.getService(UriGrantsManagerInternal.class) LocalServices.getService(UriGrantsManagerInternal.class) .grantUriPermissionFromIntent(callingUid, carrierPackages.get(0), .grantUriPermissionFromIntent(callingUid, carrierPackages.get(0), Loading @@ -528,4 +531,13 @@ public class MmsServiceBroker extends SystemService { return contentUri; return contentUri; } } } } private int getPhoneIdFromSubId(int subId) { SubscriptionManager subManager = (SubscriptionManager) mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); if (subManager == null) return INVALID_SIM_SLOT_INDEX; SubscriptionInfo info = subManager.getActiveSubscriptionInfo(subId); if (info == null) return INVALID_SIM_SLOT_INDEX; return info.getSimSlotIndex(); } } }
services/core/java/com/android/server/TelephonyRegistry.java +30 −14 Original line number Original line Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server; package com.android.server; import static android.telephony.SubscriptionManager.INVALID_SIM_SLOT_INDEX; import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED; import static android.telephony.TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_DATA; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_DATA; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_VOICE; import static android.telephony.TelephonyRegistryManager.SIM_ACTIVATION_TYPE_VOICE; Loading Loading @@ -57,6 +58,7 @@ import android.telephony.PreciseDisconnectCause; import android.telephony.Rlog; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.telephony.data.ApnSetting; import android.telephony.data.ApnSetting; Loading Loading @@ -95,7 +97,7 @@ import java.util.NoSuchElementException; * and 15973975 by saving the phoneId of the registrant and then using the * and 15973975 by saving the phoneId of the registrant and then using the * phoneId when deciding to to make a callback. This is necessary because * phoneId when deciding to to make a callback. This is necessary because * a subId changes from to a dummy value when a SIM is removed and thus won't * a subId changes from to a dummy value when a SIM is removed and thus won't * compare properly. Because SubscriptionManager.getPhoneId(int subId) handles * compare properly. Because getPhoneIdFromSubId(int subId) handles * the dummy value conversion we properly do the callbacks. * the dummy value conversion we properly do the callbacks. * * * Eventually we may want to remove the notion of dummy value but for now this * Eventually we may want to remove the notion of dummy value but for now this Loading Loading @@ -128,7 +130,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; int phoneId = SubscriptionManager.INVALID_PHONE_INDEX; int phoneId = SubscriptionManager.INVALID_SIM_SLOT_INDEX; boolean matchPhoneStateListenerEvent(int events) { boolean matchPhoneStateListenerEvent(int events) { return (callback != null) && ((events & this.events) != 0); return (callback != null) && ((events & this.events) != 0); Loading Loading @@ -226,7 +228,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultPhoneId = SubscriptionManager.INVALID_PHONE_INDEX; private int mDefaultPhoneId = SubscriptionManager.INVALID_SIM_SLOT_INDEX; private int[] mRingingCallState; private int[] mRingingCallState; Loading Loading @@ -355,7 +357,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { SubscriptionManager.getDefaultSubscriptionId()); SubscriptionManager.getDefaultSubscriptionId()); int newDefaultPhoneId = intent.getIntExtra( int newDefaultPhoneId = intent.getIntExtra( SubscriptionManager.EXTRA_SLOT_INDEX, SubscriptionManager.EXTRA_SLOT_INDEX, SubscriptionManager.getPhoneId(newDefaultSubId)); getPhoneIdFromSubId(newDefaultSubId)); if (DBG) { if (DBG) { log("onReceive:current mDefaultSubId=" + mDefaultSubId log("onReceive:current mDefaultSubId=" + mDefaultSubId + " current mDefaultPhoneId=" + mDefaultPhoneId + " current mDefaultPhoneId=" + mDefaultPhoneId Loading Loading @@ -751,7 +753,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { return; return; } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { // register // register IBinder b = callback.asBinder(); IBinder b = callback.asBinder(); Loading Loading @@ -1077,7 +1079,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { // Called only by Telecomm to communicate call state across different phone accounts. So // Called only by Telecomm to communicate call state across different phone accounts. So // there is no need to add a valid subId or slotId. // there is no need to add a valid subId or slotId. broadcastCallStateChanged(state, phoneNumber, broadcastCallStateChanged(state, phoneNumber, SubscriptionManager.INVALID_PHONE_INDEX, SubscriptionManager.INVALID_SIM_SLOT_INDEX, SubscriptionManager.INVALID_SUBSCRIPTION_ID); SubscriptionManager.INVALID_SUBSCRIPTION_ID); } } Loading Loading @@ -1301,7 +1303,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { synchronized (mRecords) { synchronized (mRecords) { mCarrierNetworkChangeState = active; mCarrierNetworkChangeState = active; for (int subId : subIds) { for (int subId : subIds) { int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); if (VDBG) { if (VDBG) { log("notifyCarrierNetworkChange: active=" + active + "subId: " + subId); log("notifyCarrierNetworkChange: active=" + active + "subId: " + subId); Loading Loading @@ -1334,7 +1336,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyCellInfoForSubscriber: subId=" + subId log("notifyCellInfoForSubscriber: subId=" + subId + " cellInfo=" + cellInfo); + " cellInfo=" + cellInfo); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mCellInfo.set(phoneId, cellInfo); mCellInfo.set(phoneId, cellInfo); Loading Loading @@ -1425,7 +1427,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyCallForwardingChangedForSubscriber: subId=" + subId log("notifyCallForwardingChangedForSubscriber: subId=" + subId + " cfi=" + cfi); + " cfi=" + cfi); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mCallForwarding[phoneId] = cfi; mCallForwarding[phoneId] = cfi; Loading Loading @@ -1453,7 +1455,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (!checkNotifyPermission("notifyDataActivity()" )) { if (!checkNotifyPermission("notifyDataActivity()" )) { return; return; } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mDataActivity[phoneId] = state; mDataActivity[phoneId] = state; Loading Loading @@ -1626,7 +1628,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyCellLocationForSubscriber: subId=" + subId log("notifyCellLocationForSubscriber: subId=" + subId + " cellLocation=" + cellLocation); + " cellLocation=" + cellLocation); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mCellLocation[phoneId] = cellLocation; mCellLocation[phoneId] = cellLocation; Loading Loading @@ -1735,7 +1737,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (!checkNotifyPermission("notifyImsCallDisconnectCause()")) { if (!checkNotifyPermission("notifyImsCallDisconnectCause()")) { return; return; } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mImsReasonInfo.set(phoneId, imsReasonInfo); mImsReasonInfo.set(phoneId, imsReasonInfo); Loading Loading @@ -1802,7 +1804,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { if (VDBG) { if (VDBG) { log("notifySrvccStateChanged: subId=" + subId + " srvccState=" + state); log("notifySrvccStateChanged: subId=" + subId + " srvccState=" + state); } } int phoneId = SubscriptionManager.getPhoneId(subId); int phoneId = getPhoneIdFromSubId(subId); synchronized (mRecords) { synchronized (mRecords) { if (validatePhoneId(phoneId)) { if (validatePhoneId(phoneId)) { mSrvccState[phoneId] = state; mSrvccState[phoneId] = state; Loading Loading @@ -2208,7 +2210,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); } } // If the phoneId is invalid, the broadcast is for overall call state. // If the phoneId is invalid, the broadcast is for overall call state. if (phoneId != SubscriptionManager.INVALID_PHONE_INDEX) { if (phoneId != SubscriptionManager.INVALID_SIM_SLOT_INDEX) { intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId); intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId); } } Loading Loading @@ -2673,4 +2675,18 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { private static CallQuality createCallQuality() { private static CallQuality createCallQuality() { return new CallQuality(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return new CallQuality(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } } private int getPhoneIdFromSubId(int subId) { SubscriptionManager subManager = (SubscriptionManager) mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); if (subManager == null) return INVALID_SIM_SLOT_INDEX; if (subId == SubscriptionManager.DEFAULT_SUBSCRIPTION_ID) { subId = SubscriptionManager.getDefaultSubscriptionId(); } SubscriptionInfo info = subManager.getActiveSubscriptionInfo(subId); if (info == null) return INVALID_SIM_SLOT_INDEX; return info.getSimSlotIndex(); } } }