Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a6d3e891 authored by Aman Gupta's avatar Aman Gupta
Browse files

Modifying existing checks in isSimPortAvailable method.

Test: Build
Bug: 218603161
Change-Id: I4e1c514474ac4648aea5275fbdfdb0038bb63d89
parent bb9e4a09
Loading
Loading
Loading
Loading
+19 −13
Original line number Original line Diff line number Diff line
@@ -57,6 +57,7 @@ import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.euicc.EuiccConnector.OtaStatusChangedCallback;
import com.android.internal.telephony.euicc.EuiccConnector.OtaStatusChangedCallback;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.internal.telephony.uicc.UiccPort;
import com.android.internal.telephony.uicc.UiccProfile;
import com.android.internal.telephony.uicc.UiccSlot;
import com.android.internal.telephony.uicc.UiccSlot;
import com.android.internal.telephony.util.ArrayUtils;
import com.android.internal.telephony.util.ArrayUtils;


@@ -1831,23 +1832,28 @@ public class EuiccController extends IEuiccController.Stub {
        }
        }
        for (UiccCardInfo info : cardInfos) {
        for (UiccCardInfo info : cardInfos) {
            //return false if physical card
            //return false if physical card
            if (info != null && info.getCardId() == cardId && (!info.isEuicc()
            if (info != null && info.getCardId() == cardId && !info.isEuicc()) {
                    || info.isRemovable())) {
                return false;
                return false;
            }
            }
            for (UiccPortInfo portInfo : info.getPorts()) {
            for (UiccPortInfo portInfo : info.getPorts()) {
                UiccPort port = UiccController.getInstance().getUiccPort(portIndex);
                if (portInfo.isActive()) {
                if (port == null) {
                    return false;
                }
                    // A port is available if it has no profiles enabled on it or calling app has
                    // A port is available if it has no profiles enabled on it or calling app has
                //carrier privilege over the profile installed on the selected port.
                    // Carrier privilege over the profile installed on the selected port.
                int result = port.getUiccProfile().getCarrierPrivilegeStatus(
                    if (portInfo.getIccId() == null) {
                        mContext.getPackageManager(), callingPackage);
                if ((result == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS)
                        || (portInfo.getIccId() == null && portInfo.isActive())) {
                        return true;
                        return true;
                    }
                    }
                    UiccPort uiccPort =
                            UiccController.getInstance().getUiccPortForSlot(
                                    info.getPhysicalSlotIndex(), portIndex);
                    if (uiccPort != null) {
                        UiccProfile uiccProfile = uiccPort.getUiccProfile();
                        if (uiccProfile != null && uiccProfile.getCarrierPrivilegeStatus(
                                mContext.getPackageManager(), callingPackage)
                                == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) {
                            return true;
                        }
                    }
                }
            }
            }
        }
        }
        return false;
        return false;