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

Commit 53f301e6 authored by Peter Wang's avatar Peter Wang Committed by Gerrit Code Review
Browse files

Merge "Refresh embedded subscriptions on package change"

parents 49853870 d4ae2848
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -318,6 +318,8 @@ public class EuiccConnector extends StateMachine implements ServiceConnection {

    private Context mContext;
    private PackageManager mPm;
    private TelephonyManager mTm;
    private SubscriptionManager mSm;

    private final PackageMonitor mPackageMonitor = new EuiccPackageMonitor();
    private final BroadcastReceiver mUserUnlockedReceiver = new BroadcastReceiver() {
@@ -361,6 +363,9 @@ public class EuiccConnector extends StateMachine implements ServiceConnection {
    private void init(Context context) {
        mContext = context;
        mPm = context.getPackageManager();
        mTm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        mSm = (SubscriptionManager)
                context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);

        // Unavailable/Available both monitor for package changes and update mSelectedComponent but
        // do not need to adjust the binding.
@@ -523,6 +528,7 @@ public class EuiccConnector extends StateMachine implements ServiceConnection {
                } else if (getCurrentState() != mUnavailableState) {
                    transitionTo(mUnavailableState);
                }
                updateSubscriptionInfoListForAllAccessibleEuiccs();
                return HANDLED;
            } else if (isEuiccCommand(message.what)) {
                BaseEuiccCommandCallback callback = getCallback(message);
@@ -631,6 +637,7 @@ public class EuiccConnector extends StateMachine implements ServiceConnection {
                        transitionTo(mBindingState);
                    }
                }
                updateSubscriptionInfoListForAllAccessibleEuiccs();
                return HANDLED;
            } else if (message.what == CMD_CONNECT_TIMEOUT) {
                transitionTo(mAvailableState);
@@ -1136,4 +1143,17 @@ public class EuiccConnector extends StateMachine implements ServiceConnection {
        pw.println("mEuiccService=" + mEuiccService);
        pw.println("mActiveCommandCount=" + mActiveCommandCallbacks.size());
    }

    private void updateSubscriptionInfoListForAllAccessibleEuiccs() {
        if (mTm.getCardIdForDefaultEuicc() == TelephonyManager.UNSUPPORTED_CARD_ID) {
            // Device does not support card ID
            mSm.requestEmbeddedSubscriptionInfoListRefresh();
        } else {
            for (UiccCardInfo cardInfo : mTm.getUiccCardsInfo()) {
                if (cardInfo.isEuicc()) {
                    mSm.requestEmbeddedSubscriptionInfoListRefresh(cardInfo.getCardId());
                }
            }
        }
    }
}