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

Commit d413b5c7 authored by Xiangyu/Malcolm Chen's avatar Xiangyu/Malcolm Chen Committed by Gerrit Code Review
Browse files

Merge "Remove parentSubId and define API to set groupSubId"

parents bfd3237e aea9b02a
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -42811,6 +42811,7 @@ package android.telephony {
    method public java.lang.String getCountryIso();
    method public int getDataRoaming();
    method public java.lang.CharSequence getDisplayName();
    method public java.lang.String getGroupUuid();
    method public java.lang.String getIccId();
    method public int getIconTint();
    method public deprecated int getMcc();
@@ -42818,7 +42819,6 @@ package android.telephony {
    method public deprecated int getMnc();
    method public java.lang.String getMncString();
    method public java.lang.String getNumber();
    method public int getParentSubId();
    method public int getSimSlotIndex();
    method public int getSubscriptionId();
    method public boolean isEmbedded();
@@ -42852,6 +42852,7 @@ package android.telephony {
    method public static boolean isValidSubscriptionId(int);
    method public void removeOnOpportunisticSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener);
    method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener);
    method public java.lang.String setSubscriptionGroup(int[]);
    method public void setSubscriptionOverrideCongested(int, boolean, long);
    method public void setSubscriptionOverrideUnmetered(int, boolean, long);
    method public void setSubscriptionPlans(int, java.util.List<android.telephony.SubscriptionPlan>);
+21 −19
Original line number Diff line number Diff line
@@ -143,9 +143,11 @@ public class SubscriptionInfo implements Parcelable {
    private boolean mIsOpportunistic;

    /**
     * SubId of the parent subscription, if there is one.
     * A UUID assigned to the subscription group. It returns
     * null if not assigned.
     */
    private int mParentSubId;
    @Nullable
    private String mGroupUUID;

    /**
     * @hide
@@ -156,7 +158,7 @@ public class SubscriptionInfo implements Parcelable {
            @Nullable UiccAccessRule[] accessRules, String cardId) {
        this(id, iccId, simSlotIndex, displayName, carrierName, nameSource, iconTint, number,
                roaming, icon, mcc, mnc, countryIso, isEmbedded, accessRules, cardId,
                false, SubscriptionManager.INVALID_SUBSCRIPTION_ID);
                false, null);
    }

    /**
@@ -166,7 +168,7 @@ public class SubscriptionInfo implements Parcelable {
            CharSequence carrierName, int nameSource, int iconTint, String number, int roaming,
            Bitmap icon, String mcc, String mnc, String countryIso, boolean isEmbedded,
            @Nullable UiccAccessRule[] accessRules, String cardId, boolean isOpportunistic,
            int parentSubId) {
            @Nullable String groupUUID) {
        this.mId = id;
        this.mIccId = iccId;
        this.mSimSlotIndex = simSlotIndex;
@@ -184,7 +186,7 @@ public class SubscriptionInfo implements Parcelable {
        this.mAccessRules = accessRules;
        this.mCardId = cardId;
        this.mIsOpportunistic = isOpportunistic;
        this.mParentSubId = parentSubId;
        this.mGroupUUID = groupUUID;
    }

    /**
@@ -388,16 +390,16 @@ public class SubscriptionInfo implements Parcelable {
    }

    /**
     * Used in scenarios where a child subscription is bundled with a primary parent subscription.
     * The child subscription will typically be opportunistic (see {@link #isOpportunistic()})
     * and will be used to provide data services where available, with the parent being the primary
     * fallback subscription.
     * Used in scenarios where different subscriptions are bundled as a group.
     * It's typically a primary and an opportunistic subscription. (see {@link #isOpportunistic()})
     * Such that those subscriptions will have some affiliated behaviors such as opportunistic
     * subscription may be invisible to the user.
     *
     * @return subId of parent subscription if it’s bundled with a primary subscription.
     * If there isn't one, {@link SubscriptionManager#INVALID_SUBSCRIPTION_ID}
     * @return group UUID a String of group UUID if it belongs to a group. Otherwise
     * it will return null.
     */
    public int getParentSubId() {
        return mParentSubId;
    public String getGroupUuid() {
        return mGroupUUID;
    }

    /**
@@ -493,11 +495,11 @@ public class SubscriptionInfo implements Parcelable {
            UiccAccessRule[] accessRules = source.createTypedArray(UiccAccessRule.CREATOR);
            String cardId = source.readString();
            boolean isOpportunistic = source.readBoolean();
            int parentSubId = source.readInt();
            String groupUUID = source.readString();

            return new SubscriptionInfo(id, iccId, simSlotIndex, displayName, carrierName,
                    nameSource, iconTint, number, dataRoaming, iconBitmap, mcc, mnc, countryIso,
                    isEmbedded, accessRules, cardId, isOpportunistic, parentSubId);
                    isEmbedded, accessRules, cardId, isOpportunistic, groupUUID);
        }

        @Override
@@ -525,7 +527,7 @@ public class SubscriptionInfo implements Parcelable {
        dest.writeTypedArray(mAccessRules, flags);
        dest.writeString(mCardId);
        dest.writeBoolean(mIsOpportunistic);
        dest.writeInt(mParentSubId);
        dest.writeString(mGroupUUID);
    }

    @Override
@@ -559,13 +561,13 @@ public class SubscriptionInfo implements Parcelable {
                + " mnc " + mMnc + "mCountryIso=" + mCountryIso + " isEmbedded " + mIsEmbedded
                + " accessRules " + Arrays.toString(mAccessRules)
                + " cardId=" + cardIdToPrint + " isOpportunistic " + mIsOpportunistic
                + " parentSubId=" + mParentSubId + "}";
                + " mGroupUUID=" + mGroupUUID + "}";
    }

    @Override
    public int hashCode() {
        return Objects.hash(mId, mSimSlotIndex, mNameSource, mIconTint, mDataRoaming, mIsEmbedded,
                mIsOpportunistic, mParentSubId, mIccId, mNumber, mMcc, mMnc, mCountryIso,
                mIsOpportunistic, mGroupUUID, mIccId, mNumber, mMcc, mMnc, mCountryIso,
                mCardId, mDisplayName, mCarrierName, mAccessRules);
    }

@@ -588,7 +590,7 @@ public class SubscriptionInfo implements Parcelable {
                && mDataRoaming == toCompare.mDataRoaming
                && mIsEmbedded == toCompare.mIsEmbedded
                && mIsOpportunistic == toCompare.mIsOpportunistic
                && mParentSubId == toCompare.mParentSubId
                && Objects.equals(mGroupUUID, toCompare.mGroupUUID)
                && Objects.equals(mIccId, toCompare.mIccId)
                && Objects.equals(mNumber, toCompare.mNumber)
                && Objects.equals(mMcc, toCompare.mMcc)
+39 −10
Original line number Diff line number Diff line
@@ -118,7 +118,6 @@ public class SubscriptionManager {
    @UnsupportedAppUsage
    public static final Uri CONTENT_URI = Uri.parse("content://telephony/siminfo");


    /**
     * Generates a content {@link Uri} used to receive updates on simInfo change
     * on the given subscriptionId
@@ -575,6 +574,15 @@ public class SubscriptionManager {
     */
    public static final String PARENT_SUB_ID = "parent_sub_id";

    /**
     * TelephonyProvider column name for group ID. Subscriptions with same group ID
     * are considered bundled together, and should behave as a single subscription at
     * certain scenarios.
     *
     * @hide
     */
    public static final String GROUP_UUID = "group_uuid";

    /**
     * Broadcast Action: The user has changed one of the default subs related to
     * data, phone calls, or sms</p>
@@ -2355,19 +2363,40 @@ public class SubscriptionManager {
    }

    /**
     * Set parent subId by simInfo index
     * Inform SubscriptionManager that subscriptions in the list are bundled
     * as a group. Typically it's a primary subscription and an opportunistic
     * subscription. It should only affect multi-SIM scenarios where primary
     * and opportunistic subscriptions can be activated together.
     * Being in the same group means they might be activated or deactivated
     * together, some of them may be invisible to the users, etc.
     *
     * @param parentSubId subId of its parent subscription.
     * @param subId the unique SubscriptionInfo index in database
     * @return the number of records updated
     * @hide
     * Caller will either have {@link android.Manifest.permission.MODIFY_PHONE_STATE}
     * permission or can manage all subscriptions in the list, according to their
     * acess rules.
     *
     * @param subIdList list of subId that will be in the same group
     * @return groupUUID a UUID assigned to the subscription group. It returns
     * null if fails.
     *
     */
    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
    public int setParentSubId(int parentSubId, int subId) {
        if (VDBG) logd("[setParentSubId]+ parentSubId:" + parentSubId + " subId:" + subId);
        return setSubscriptionPropertyHelper(subId, "parentSubId",
                (iSub)-> iSub.setParentSubId(parentSubId, subId));
    public String setSubscriptionGroup(int[] subIdList) {
        String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>";
        if (VDBG) {
            logd("[setSubscriptionGroup]+ subIdList:" + Arrays.toString(subIdList));
        }

        String groupUUID = null;
        try {
            ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
            if (iSub != null) {
                groupUUID = iSub.setSubscriptionGroup(subIdList, pkgForDebug);
            }
        } catch (RemoteException ex) {
            // ignore it
        }

        return groupUUID;
    }

    private interface CallISubMethodHelper {
+15 −5
Original line number Diff line number Diff line
@@ -165,13 +165,23 @@ interface ISub {
    int setOpportunistic(boolean opportunistic, int subId);

    /**
     * Set parent subId by simInfo index
     * Inform SubscriptionManager that subscriptions in the list are bundled
     * as a group. Typically it's a primary subscription and an opportunistic
     * subscription. It should only affect multi-SIM scenarios where primary
     * and opportunistic subscriptions can be activated together.
     * Being in the same group means they might be activated or deactivated
     * together, some of them may be invisible to the users, etc.
     *
     * Caller will either have {@link android.Manifest.permission.MODIFY_PHONE_STATE}
     * permission or can manage all subscriptions in the list, according to their
     * acess rules.
     *
     * @param subIdList list of subId that will be in the same group
     * @return groupUUID a UUID assigned to the subscription group. It returns
     * null if fails.
     *
     * @param parentSubId: subId of its parent subscription.
     * @param subId the unique SubscriptionInfo index in database
     * @return the number of records updated
     */
    int setParentSubId(int parentSubId, int subId);
    String setSubscriptionGroup(in int[] subIdList, String callingPackage);

    /**
     * Set which subscription is preferred for cellular data. It's