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

Commit 48d98cdf authored by Malcolm Chen's avatar Malcolm Chen
Browse files

Make sure IS_EMBEDDED is set properly when adding new subscription.

Bug: 121194788
Test: manual
Change-Id: I45d906c561886f95c9f8d5c6f8b60f08d33c1c45
parent 60aa3c07
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import com.android.internal.telephony.euicc.EuiccController;
import com.android.internal.telephony.uicc.IccRecords;
import com.android.internal.telephony.uicc.IccUtils;
import com.android.internal.telephony.uicc.UiccController;
import com.android.internal.telephony.uicc.UiccSlot;

import java.io.FileDescriptor;
import java.io.PrintWriter;
@@ -671,22 +672,30 @@ public class SubscriptionInfoUpdater extends Handler {
        List<SubscriptionInfo> subInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
        int nSubCount = (subInfos == null) ? 0 : subInfos.size();
        logd("updateSubscriptionInfoByIccId: nSubCount = " + nSubCount);
        boolean changed = false;
        for (int i=0; i < nSubCount; i++) {
            SubscriptionInfo temp = subInfos.get(i);
            ContentValues value = new ContentValues(1);

            String msisdn = TelephonyManager.getDefault().getLine1Number(
                    temp.getSubscriptionId());

            if (msisdn != null) {
                ContentValues value = new ContentValues(1);
            UiccSlot uiccSlot = UiccController.getInstance()
                    .getUiccSlotForPhone(temp.getSimSlotIndex());
            boolean isEuicc = (uiccSlot != null && uiccSlot.isEuicc());

            if (isEuicc != temp.isEmbedded() || !TextUtils.equals(msisdn, temp.getNumber())) {
                value.put(SubscriptionManager.IS_EMBEDDED, isEuicc);
                value.put(SubscriptionManager.NUMBER, msisdn);
                contentResolver.update(SubscriptionManager.getUriForSubscriptionId(
                        temp.getSubscriptionId()), value, null, null);

                changed = true;
            }
        }
        if (changed) {
            // refresh Cached Active Subscription Info List
            SubscriptionController.getInstance().refreshCachedActiveSubscriptionInfoList();
        }
        }

        // Ensure the modems are mapped correctly
        mSubscriptionManager.setDefaultDataSubId(
@@ -726,6 +735,7 @@ public class SubscriptionInfoUpdater extends Handler {

        GetEuiccProfileInfoListResult result =
                EuiccController.get().blockingGetEuiccProfileInfoList(cardId);
        if (DBG) logd("blockingGetEuiccProfileInfoList cardId " + cardId);
        if (result == null) {
            // IPC to the eUICC controller failed.
            return false;
@@ -736,6 +746,7 @@ public class SubscriptionInfoUpdater extends Handler {
            List<EuiccProfileInfo> list = result.getProfiles();
            if (list == null || list.size() == 0) {
                embeddedProfiles = new EuiccProfileInfo[0];
                if (DBG) logd("blockingGetEuiccProfileInfoList list is empty.");
            } else {
                embeddedProfiles = list.toArray(new EuiccProfileInfo[list.size()]);
            }
+2 −1
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.os.Handler;
import android.os.Message;
import android.telephony.Rlog;
import android.telephony.TelephonyManager;
import android.text.TextUtils;

import com.android.internal.telephony.CommandsInterface;
import com.android.internal.telephony.TelephonyComponentFactory;
@@ -489,7 +490,7 @@ public class UiccCard {
     * card or the EID of the card for an eUICC card.
     */
    public String getCardId() {
        if (mCardId != null) {
        if (!TextUtils.isEmpty(mCardId)) {
            return mCardId;
        } else if (mUiccProfile != null) {
            return mUiccProfile.getIccId();