Loading src/java/com/android/internal/telephony/CarrierPrivilegesTracker.java +6 −5 Original line number Original line Diff line number Diff line Loading @@ -136,7 +136,7 @@ public class CarrierPrivilegesTracker extends Handler { // Map of PackageName -> UIDs for that Package // Map of PackageName -> UIDs for that Package private final Map<String, Set<Integer>> mCachedUids; private final Map<String, Set<Integer>> mCachedUids; private int[] mPrivilegedUids; protected int[] mPrivilegedUids; private final BroadcastReceiver mIntentReceiver = private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { new BroadcastReceiver() { Loading Loading @@ -198,10 +198,11 @@ public class CarrierPrivilegesTracker extends Handler { @NonNull Looper looper, @NonNull Phone phone, @NonNull Context context) { @NonNull Looper looper, @NonNull Phone phone, @NonNull Context context) { super(looper); super(looper); mContext = context; mContext = context; mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); mCarrierConfigManager = mPackageManager = context.getSystemService(PackageManager.class); (CarrierConfigManager) mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE); mUserManager = context.getSystemService(UserManager.class); mPackageManager = mContext.getPackageManager(); mTelephonyManager = context.getSystemService(TelephonyManager.class); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); mPhone = phone; mPhone = phone; IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter(); Loading src/java/com/android/internal/telephony/Phone.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -417,6 +417,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { private boolean mUnitTestMode; private boolean mUnitTestMode; private final CarrierPrivilegesTracker mCarrierPrivilegesTracker; public IccRecords getIccRecords() { public IccRecords getIccRecords() { return mIccRecords.get(); return mIccRecords.get(); } } Loading Loading @@ -538,6 +540,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mIsVoiceCapable = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)) mIsVoiceCapable = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)) .isVoiceCapable(); .isVoiceCapable(); mCarrierPrivilegesTracker = new CarrierPrivilegesTracker(mLooper, this, mContext); /** /** * Some RIL's don't always send RIL_UNSOL_CALL_RING so it needs * Some RIL's don't always send RIL_UNSOL_CALL_RING so it needs * to be generated locally. Ideally all ring tones should be loops * to be generated locally. Ideally all ring tones should be loops Loading Loading @@ -4240,6 +4244,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return RIL.RADIO_HAL_VERSION_UNKNOWN; return RIL.RADIO_HAL_VERSION_UNKNOWN; } } /** @hide */ public CarrierPrivilegesTracker getCarrierPrivilegesTracker() { return mCarrierPrivilegesTracker; } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("Phone: subId=" + getSubId()); pw.println("Phone: subId=" + getSubId()); pw.println(" mPhoneId=" + mPhoneId); pw.println(" mPhoneId=" + mPhoneId); Loading Loading @@ -4277,6 +4286,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode()); pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode()); pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency()); pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency()); pw.println(" service state=" + getServiceState()); pw.println(" service state=" + getServiceState()); String privilegedUids = Arrays.toString(mCarrierPrivilegesTracker.mPrivilegedUids); pw.println(" administratorUids=" + privilegedUids); pw.flush(); pw.flush(); pw.println("++++++++++++++++++++++++++++++++"); pw.println("++++++++++++++++++++++++++++++++"); Loading src/java/com/android/internal/telephony/dataconnection/DataConnection.java +34 −2 Original line number Original line Diff line number Diff line Loading @@ -95,6 +95,7 @@ import java.lang.annotation.RetentionPolicy; import java.net.InetAddress; import java.net.InetAddress; import java.net.UnknownHostException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collection; import java.util.List; import java.util.List; import java.util.Locale; import java.util.Locale; Loading Loading @@ -182,6 +183,8 @@ public class DataConnection extends StateMachine { private final LocalLog mHandoverLocalLog = new LocalLog(100); private final LocalLog mHandoverLocalLog = new LocalLog(100); private int[] mAdministratorUids = new int[0]; /** /** * Used internally for saving connecting parameters. * Used internally for saving connecting parameters. */ */ Loading Loading @@ -329,8 +332,8 @@ public class DataConnection extends StateMachine { static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28; static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28; static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29; static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29; static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30; static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30; private static final int CMD_TO_STRING_COUNT = static final int EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED = BASE + 31; EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE + 1; private static final int CMD_TO_STRING_COUNT = EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED - BASE + 1; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; static { static { Loading Loading @@ -372,6 +375,8 @@ public class DataConnection extends StateMachine { sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED"; sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED"; sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] = sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] = "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED"; "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED"; sCmdToString[EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED - BASE] = "EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED"; } } // Convert cmd to string or null if unknown // Convert cmd to string or null if unknown static String cmdToString(int cmd) { static String cmdToString(int cmd) { Loading Loading @@ -1413,6 +1418,8 @@ public class DataConnection extends StateMachine { mNetworkInfo.getDetailedState() == NetworkInfo.DetailedState.SUSPENDED; mNetworkInfo.getDetailedState() == NetworkInfo.DetailedState.SUSPENDED; result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, !suspended); result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, !suspended); result.setAdministratorUids(mAdministratorUids); return result; return result; } } Loading Loading @@ -1941,6 +1948,10 @@ public class DataConnection extends StateMachine { // tear down the connection through networkAgent unwanted callback if all requests for // tear down the connection through networkAgent unwanted callback if all requests for // this connection are going away. // this connection are going away. mRestrictedNetworkOverride = shouldRestrictNetwork(); mRestrictedNetworkOverride = shouldRestrictNetwork(); mPhone.getCarrierPrivilegesTracker() .registerCarrierPrivilegesListener( getHandler(), EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED, null); } } @Override @Override public boolean processMessage(Message msg) { public boolean processMessage(Message msg) { Loading Loading @@ -2030,6 +2041,12 @@ public class DataConnection extends StateMachine { } } retVal = HANDLED; retVal = HANDLED; break; break; case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED: AsyncResult asyncResult = (AsyncResult) msg.obj; int[] administratorUids = (int[]) asyncResult.result; mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); retVal = HANDLED; break; default: default: if (VDBG) { if (VDBG) { log("DcActivatingState not handled msg.what=" + log("DcActivatingState not handled msg.what=" + Loading Loading @@ -2207,6 +2224,8 @@ public class DataConnection extends StateMachine { TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(), TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(), mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED); mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED); mPhone.getCarrierPrivilegesTracker().unregisterCarrierPrivilegesListener(getHandler()); } } @Override @Override Loading Loading @@ -2527,6 +2546,19 @@ public class DataConnection extends StateMachine { retVal = HANDLED; retVal = HANDLED; break; break; } } case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED: AsyncResult asyncResult = (AsyncResult) msg.obj; int[] administratorUids = (int[]) asyncResult.result; mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); // Administrator UIDs changed, so update NetworkAgent with new // NetworkCapabilities if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities( getNetworkCapabilities(), DataConnection.this); } retVal = HANDLED; break; default: default: if (VDBG) { if (VDBG) { log("DcActiveState not handled msg.what=" + getWhatToString(msg.what)); log("DcActiveState not handled msg.what=" + getWhatToString(msg.what)); Loading tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -273,6 +273,8 @@ public abstract class TelephonyTest { protected IccCard mIccCard; protected IccCard mIccCard; @Mock @Mock protected NetworkStatsManager mStatsManager; protected NetworkStatsManager mStatsManager; @Mock protected CarrierPrivilegesTracker mCarrierPrivilegesTracker; protected ActivityManager mActivityManager; protected ActivityManager mActivityManager; protected ImsCallProfile mImsCallProfile; protected ImsCallProfile mImsCallProfile; Loading Loading @@ -489,6 +491,7 @@ public abstract class TelephonyTest { doReturn(mTransportManager).when(mPhone).getTransportManager(); doReturn(mTransportManager).when(mPhone).getTransportManager(); doReturn(mDataEnabledSettings).when(mPhone).getDataEnabledSettings(); doReturn(mDataEnabledSettings).when(mPhone).getDataEnabledSettings(); doReturn(mDcTracker).when(mPhone).getDcTracker(anyInt()); doReturn(mDcTracker).when(mPhone).getDcTracker(anyInt()); doReturn(mCarrierPrivilegesTracker).when(mPhone).getCarrierPrivilegesTracker(); mIccSmsInterfaceManager.mDispatchersController = mSmsDispatchersController; mIccSmsInterfaceManager.mDispatchersController = mSmsDispatchersController; //mUiccController //mUiccController Loading Loading
src/java/com/android/internal/telephony/CarrierPrivilegesTracker.java +6 −5 Original line number Original line Diff line number Diff line Loading @@ -136,7 +136,7 @@ public class CarrierPrivilegesTracker extends Handler { // Map of PackageName -> UIDs for that Package // Map of PackageName -> UIDs for that Package private final Map<String, Set<Integer>> mCachedUids; private final Map<String, Set<Integer>> mCachedUids; private int[] mPrivilegedUids; protected int[] mPrivilegedUids; private final BroadcastReceiver mIntentReceiver = private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { new BroadcastReceiver() { Loading Loading @@ -198,10 +198,11 @@ public class CarrierPrivilegesTracker extends Handler { @NonNull Looper looper, @NonNull Phone phone, @NonNull Context context) { @NonNull Looper looper, @NonNull Phone phone, @NonNull Context context) { super(looper); super(looper); mContext = context; mContext = context; mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); mCarrierConfigManager = mPackageManager = context.getSystemService(PackageManager.class); (CarrierConfigManager) mContext.getSystemService(Context.CARRIER_CONFIG_SERVICE); mUserManager = context.getSystemService(UserManager.class); mPackageManager = mContext.getPackageManager(); mTelephonyManager = context.getSystemService(TelephonyManager.class); mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE); mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); mPhone = phone; mPhone = phone; IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter(); Loading
src/java/com/android/internal/telephony/Phone.java +11 −0 Original line number Original line Diff line number Diff line Loading @@ -417,6 +417,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { private boolean mUnitTestMode; private boolean mUnitTestMode; private final CarrierPrivilegesTracker mCarrierPrivilegesTracker; public IccRecords getIccRecords() { public IccRecords getIccRecords() { return mIccRecords.get(); return mIccRecords.get(); } } Loading Loading @@ -538,6 +540,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { mIsVoiceCapable = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)) mIsVoiceCapable = ((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)) .isVoiceCapable(); .isVoiceCapable(); mCarrierPrivilegesTracker = new CarrierPrivilegesTracker(mLooper, this, mContext); /** /** * Some RIL's don't always send RIL_UNSOL_CALL_RING so it needs * Some RIL's don't always send RIL_UNSOL_CALL_RING so it needs * to be generated locally. Ideally all ring tones should be loops * to be generated locally. Ideally all ring tones should be loops Loading Loading @@ -4240,6 +4244,11 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { return RIL.RADIO_HAL_VERSION_UNKNOWN; return RIL.RADIO_HAL_VERSION_UNKNOWN; } } /** @hide */ public CarrierPrivilegesTracker getCarrierPrivilegesTracker() { return mCarrierPrivilegesTracker; } public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println("Phone: subId=" + getSubId()); pw.println("Phone: subId=" + getSubId()); pw.println(" mPhoneId=" + mPhoneId); pw.println(" mPhoneId=" + mPhoneId); Loading Loading @@ -4277,6 +4286,8 @@ public abstract class Phone extends Handler implements PhoneInternalInterface { pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode()); pw.println(" isInEmergencySmsMode=" + isInEmergencySmsMode()); pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency()); pw.println(" isEcmCanceledForEmergency=" + isEcmCanceledForEmergency()); pw.println(" service state=" + getServiceState()); pw.println(" service state=" + getServiceState()); String privilegedUids = Arrays.toString(mCarrierPrivilegesTracker.mPrivilegedUids); pw.println(" administratorUids=" + privilegedUids); pw.flush(); pw.flush(); pw.println("++++++++++++++++++++++++++++++++"); pw.println("++++++++++++++++++++++++++++++++"); Loading
src/java/com/android/internal/telephony/dataconnection/DataConnection.java +34 −2 Original line number Original line Diff line number Diff line Loading @@ -95,6 +95,7 @@ import java.lang.annotation.RetentionPolicy; import java.net.InetAddress; import java.net.InetAddress; import java.net.UnknownHostException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collection; import java.util.List; import java.util.List; import java.util.Locale; import java.util.Locale; Loading Loading @@ -182,6 +183,8 @@ public class DataConnection extends StateMachine { private final LocalLog mHandoverLocalLog = new LocalLog(100); private final LocalLog mHandoverLocalLog = new LocalLog(100); private int[] mAdministratorUids = new int[0]; /** /** * Used internally for saving connecting parameters. * Used internally for saving connecting parameters. */ */ Loading Loading @@ -329,8 +332,8 @@ public class DataConnection extends StateMachine { static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28; static final int EVENT_DATA_CONNECTION_METEREDNESS_CHANGED = BASE + 28; static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29; static final int EVENT_NR_FREQUENCY_CHANGED = BASE + 29; static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30; static final int EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED = BASE + 30; private static final int CMD_TO_STRING_COUNT = static final int EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED = BASE + 31; EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE + 1; private static final int CMD_TO_STRING_COUNT = EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED - BASE + 1; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; static { static { Loading Loading @@ -372,6 +375,8 @@ public class DataConnection extends StateMachine { sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED"; sCmdToString[EVENT_NR_FREQUENCY_CHANGED - BASE] = "EVENT_NR_FREQUENCY_CHANGED"; sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] = sCmdToString[EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED - BASE] = "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED"; "EVENT_CARRIER_CONFIG_LINK_BANDWIDTHS_CHANGED"; sCmdToString[EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED - BASE] = "EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED"; } } // Convert cmd to string or null if unknown // Convert cmd to string or null if unknown static String cmdToString(int cmd) { static String cmdToString(int cmd) { Loading Loading @@ -1413,6 +1418,8 @@ public class DataConnection extends StateMachine { mNetworkInfo.getDetailedState() == NetworkInfo.DetailedState.SUSPENDED; mNetworkInfo.getDetailedState() == NetworkInfo.DetailedState.SUSPENDED; result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, !suspended); result.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_SUSPENDED, !suspended); result.setAdministratorUids(mAdministratorUids); return result; return result; } } Loading Loading @@ -1941,6 +1948,10 @@ public class DataConnection extends StateMachine { // tear down the connection through networkAgent unwanted callback if all requests for // tear down the connection through networkAgent unwanted callback if all requests for // this connection are going away. // this connection are going away. mRestrictedNetworkOverride = shouldRestrictNetwork(); mRestrictedNetworkOverride = shouldRestrictNetwork(); mPhone.getCarrierPrivilegesTracker() .registerCarrierPrivilegesListener( getHandler(), EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED, null); } } @Override @Override public boolean processMessage(Message msg) { public boolean processMessage(Message msg) { Loading Loading @@ -2030,6 +2041,12 @@ public class DataConnection extends StateMachine { } } retVal = HANDLED; retVal = HANDLED; break; break; case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED: AsyncResult asyncResult = (AsyncResult) msg.obj; int[] administratorUids = (int[]) asyncResult.result; mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); retVal = HANDLED; break; default: default: if (VDBG) { if (VDBG) { log("DcActivatingState not handled msg.what=" + log("DcActivatingState not handled msg.what=" + Loading Loading @@ -2207,6 +2224,8 @@ public class DataConnection extends StateMachine { TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(), TelephonyMetrics.getInstance().writeRilDataCallEvent(mPhone.getPhoneId(), mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED); mCid, mApnSetting.getApnTypeBitmask(), RilDataCall.State.DISCONNECTED); mPhone.getCarrierPrivilegesTracker().unregisterCarrierPrivilegesListener(getHandler()); } } @Override @Override Loading Loading @@ -2527,6 +2546,19 @@ public class DataConnection extends StateMachine { retVal = HANDLED; retVal = HANDLED; break; break; } } case EVENT_CARRIER_PRIVILEGED_UIDS_CHANGED: AsyncResult asyncResult = (AsyncResult) msg.obj; int[] administratorUids = (int[]) asyncResult.result; mAdministratorUids = Arrays.copyOf(administratorUids, administratorUids.length); // Administrator UIDs changed, so update NetworkAgent with new // NetworkCapabilities if (mNetworkAgent != null) { mNetworkAgent.sendNetworkCapabilities( getNetworkCapabilities(), DataConnection.this); } retVal = HANDLED; break; default: default: if (VDBG) { if (VDBG) { log("DcActiveState not handled msg.what=" + getWhatToString(msg.what)); log("DcActiveState not handled msg.what=" + getWhatToString(msg.what)); Loading
tests/telephonytests/src/com/android/internal/telephony/TelephonyTest.java +3 −0 Original line number Original line Diff line number Diff line Loading @@ -273,6 +273,8 @@ public abstract class TelephonyTest { protected IccCard mIccCard; protected IccCard mIccCard; @Mock @Mock protected NetworkStatsManager mStatsManager; protected NetworkStatsManager mStatsManager; @Mock protected CarrierPrivilegesTracker mCarrierPrivilegesTracker; protected ActivityManager mActivityManager; protected ActivityManager mActivityManager; protected ImsCallProfile mImsCallProfile; protected ImsCallProfile mImsCallProfile; Loading Loading @@ -489,6 +491,7 @@ public abstract class TelephonyTest { doReturn(mTransportManager).when(mPhone).getTransportManager(); doReturn(mTransportManager).when(mPhone).getTransportManager(); doReturn(mDataEnabledSettings).when(mPhone).getDataEnabledSettings(); doReturn(mDataEnabledSettings).when(mPhone).getDataEnabledSettings(); doReturn(mDcTracker).when(mPhone).getDcTracker(anyInt()); doReturn(mDcTracker).when(mPhone).getDcTracker(anyInt()); doReturn(mCarrierPrivilegesTracker).when(mPhone).getCarrierPrivilegesTracker(); mIccSmsInterfaceManager.mDispatchersController = mSmsDispatchersController; mIccSmsInterfaceManager.mDispatchersController = mSmsDispatchersController; //mUiccController //mUiccController Loading