Loading telephony/java/android/telephony/CarrierInfo.java 0 → 100644 +236 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.telephony; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; import androidx.annotation.NonNull; import com.android.telephony.Rlog; import java.util.ArrayList; import java.util.List; /** * CarrierInfo that is used to represent the carrier lock information details. * * @hide */ public final class CarrierInfo implements Parcelable { /** * Used to create a {@link CarrierInfo} from a {@link Parcel}. * * @hide */ public static final @android.annotation.NonNull Creator<CarrierInfo> CREATOR = new Creator<CarrierInfo>() { /** * Create a new instance of the Parcelable class, instantiating it * from the given Parcel whose data had previously been written by * {@link Parcelable#writeToParcel Parcelable.writeToParcel()}. * * @param source The Parcel to read the object's data from. * @return Returns a new instance of the Parcelable class. */ @Override public CarrierInfo createFromParcel(Parcel source) { return new CarrierInfo(source); } /** * Create a new array of the Parcelable class. * * @param size Size of the array. * @return Returns an array of the Parcelable class, with every entry * initialized to null. */ @Override public CarrierInfo[] newArray(int size) { return new CarrierInfo[size]; } }; @NonNull private String mMcc; @NonNull private String mMnc; @Nullable private String mSpn; @Nullable private String mGid1; @Nullable private String mGid2; @Nullable private String mImsiPrefix; /** Ehplmn is String combination of MCC,MNC */ @Nullable private List<String> mEhplmn; @Nullable private String mIccid; @Nullable private String mImpi; /** @hide */ @NonNull public String getMcc() { return mMcc; } /** @hide */ @NonNull public String getMnc() { return mMnc; } /** @hide */ @Nullable public String getSpn() { return mSpn; } /** @hide */ @Nullable public String getGid1() { return mGid1; } /** @hide */ @Nullable public String getGid2() { return mGid2; } /** @hide */ @Nullable public String getImsiPrefix() { return mImsiPrefix; } /** @hide */ @Nullable public String getIccid() { return mIccid; } /** @hide */ @Nullable public String getImpi() { return mImpi; } /** * Returns the list of EHPLMN. * * @return List of String that represent Ehplmn. * @hide */ @NonNull public List<String> getEhplmn() { return mEhplmn; } /** @hide */ public CarrierInfo(@NonNull String mcc, @NonNull String mnc, @Nullable String spn, @Nullable String gid1, @Nullable String gid2, @Nullable String imsi, @Nullable String iccid, @Nullable String impi, @Nullable List<String> plmnArrayList) { mMcc = mcc; mMnc = mnc; mSpn = spn; mGid1 = gid1; mGid2 = gid2; mImsiPrefix = imsi; mIccid = iccid; mImpi = impi; mEhplmn = plmnArrayList; } /** * Describe the kinds of special objects contained in this Parcelable * instance's marshaled representation. For example, if the object will * include a file descriptor in the output of {@link #writeToParcel(Parcel, int)}, * the return value of this method must include the * {@link #CONTENTS_FILE_DESCRIPTOR} bit. * * @return a bitmask indicating the set of special object types marshaled * by this Parcelable object instance. * @hide */ @Override public int describeContents() { return 0; } /** * Flatten this object in to a Parcel. * * @param dest The Parcel in which the object should be written. * @param flags Additional flags about how the object should be written. * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}. * @hide */ @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeString8(mMcc); dest.writeString8(mMnc); dest.writeString8(mSpn); dest.writeString8(mGid1); dest.writeString8(mGid2); dest.writeString8(mImsiPrefix); dest.writeString8(mIccid); dest.writeString8(mImpi); dest.writeStringList(mEhplmn); } /** @hide */ public CarrierInfo(Parcel in) { mEhplmn = new ArrayList<String>(); mMcc = in.readString8(); mMnc = in.readString8(); mSpn = in.readString8(); mGid1 = in.readString8(); mGid2 = in.readString8(); mImsiPrefix = in.readString8(); mIccid = in.readString8(); mImpi = in.readString8(); in.readStringList(mEhplmn); } /** @hide */ @android.annotation.NonNull @Override public String toString() { return "CarrierInfo MCC = " + mMcc + " MNC = " + mMnc + " SPN = " + mSpn + " GID1 = " + mGid1 + " GID2 = " + mGid2 + " IMSI = " + getPrintableImsi() + " ICCID = " + SubscriptionInfo.getPrintableId(mIccid) + " IMPI = " + mImpi + " EHPLMN = [ " + getEhplmn_toString() + " ]"; } private String getEhplmn_toString() { return String.join(" ", mEhplmn); } private String getPrintableImsi() { boolean enablePiiLog = Rlog.isLoggable("CarrierInfo", Log.VERBOSE); return ((mImsiPrefix != null && mImsiPrefix.length() > 6) ? mImsiPrefix.substring(0, 6) + Rlog.pii(enablePiiLog, mImsiPrefix.substring(6)) : mImsiPrefix); } } telephony/java/android/telephony/CarrierRestrictionRules.java +137 −4 Original line number Diff line number Diff line Loading @@ -84,13 +84,75 @@ public final class CarrierRestrictionRules implements Parcelable { /** The same configuration is applied to all SIM slots independently. */ public static final int MULTISIM_POLICY_NONE = 0; /** Any SIM card can be used as far as one SIM card matching the configuration is present. */ /** * Indicates that any SIM card can be used as far as one valid card is present in the device. * For the modem, a SIM card is valid when its content (i.e. MCC, MNC, GID, SPN) matches the * carrier restriction configuration. */ public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; /** * Indicates that the SIM lock policy applies uniformly to all sim slots. * @hide */ public static final int MULTISIM_POLICY_APPLY_TO_ALL_SLOTS = 2; /** * The SIM lock configuration applies exclusively to sim slot 1, leaving * all other sim slots unlocked irrespective of the SIM card in slot 1 * @hide */ public static final int MULTISIM_POLICY_APPLY_TO_ONLY_SLOT_1 = 3; /** * Valid sim cards must be present on sim slot1 in order * to use other sim slots. * @hide */ public static final int MULTISIM_POLICY_VALID_SIM_MUST_PRESENT_ON_SLOT_1 = 4; /** * Valid sim card must be present on slot1 and it must be in full service * in order to use other sim slots. * @hide */ public static final int MULTISIM_POLICY_ACTIVE_SERVICE_ON_SLOT_1_TO_UNBLOCK_OTHER_SLOTS = 5; /** * Valid sim card be present on any slot and it must be in full service * in order to use other sim slots. * @hide */ public static final int MULTISIM_POLICY_ACTIVE_SERVICE_ON_ANY_SLOT_TO_UNBLOCK_OTHER_SLOTS = 6; /** * Valid sim cards must be present on all slots. If any SIM cards become * invalid then device would set other SIM cards as invalid as well. * @hide */ public static final int MULTISIM_POLICY_ALL_SIMS_MUST_BE_VALID = 7; /** * In case there is no match policy listed above. * @hide */ public static final int MULTISIM_POLICY_SLOT_POLICY_OTHER = 8; /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = "MULTISIM_POLICY_", value = {MULTISIM_POLICY_NONE, MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT}) value = {MULTISIM_POLICY_NONE, MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT, MULTISIM_POLICY_APPLY_TO_ALL_SLOTS, MULTISIM_POLICY_APPLY_TO_ONLY_SLOT_1, MULTISIM_POLICY_VALID_SIM_MUST_PRESENT_ON_SLOT_1, MULTISIM_POLICY_ACTIVE_SERVICE_ON_SLOT_1_TO_UNBLOCK_OTHER_SLOTS, MULTISIM_POLICY_ACTIVE_SERVICE_ON_ANY_SLOT_TO_UNBLOCK_OTHER_SLOTS, MULTISIM_POLICY_ALL_SIMS_MUST_BE_VALID, MULTISIM_POLICY_SLOT_POLICY_OTHER }) public @interface MultiSimPolicy {} /** @hide */ Loading @@ -104,6 +166,8 @@ public final class CarrierRestrictionRules implements Parcelable { private List<CarrierIdentifier> mAllowedCarriers; private List<CarrierIdentifier> mExcludedCarriers; private List<CarrierInfo> mAllowedCarrierInfo; private List<CarrierInfo> mExcludedCarrierInfo; @CarrierRestrictionDefault private int mCarrierRestrictionDefault; @MultiSimPolicy Loading @@ -114,6 +178,8 @@ public final class CarrierRestrictionRules implements Parcelable { private CarrierRestrictionRules() { mAllowedCarriers = new ArrayList<CarrierIdentifier>(); mExcludedCarriers = new ArrayList<CarrierIdentifier>(); mAllowedCarrierInfo = new ArrayList<CarrierInfo>(); mExcludedCarrierInfo = new ArrayList<CarrierInfo>(); mCarrierRestrictionDefault = CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED; mMultiSimPolicy = MULTISIM_POLICY_NONE; mCarrierRestrictionStatus = TelephonyManager.CARRIER_RESTRICTION_STATUS_UNKNOWN; Loading @@ -122,12 +188,17 @@ public final class CarrierRestrictionRules implements Parcelable { private CarrierRestrictionRules(Parcel in) { mAllowedCarriers = new ArrayList<CarrierIdentifier>(); mExcludedCarriers = new ArrayList<CarrierIdentifier>(); mAllowedCarrierInfo = new ArrayList<CarrierInfo>(); mExcludedCarrierInfo = new ArrayList<CarrierInfo>(); in.readTypedList(mAllowedCarriers, CarrierIdentifier.CREATOR); in.readTypedList(mExcludedCarriers, CarrierIdentifier.CREATOR); mCarrierRestrictionDefault = in.readInt(); mMultiSimPolicy = in.readInt(); mCarrierRestrictionStatus = in.readInt(); if (Flags.carrierRestrictionRulesEnhancement()) { in.readTypedList(mAllowedCarrierInfo, CarrierInfo.CREATOR); in.readTypedList(mExcludedCarrierInfo, CarrierInfo.CREATOR); } } /** Loading Loading @@ -164,6 +235,25 @@ public final class CarrierRestrictionRules implements Parcelable { return mExcludedCarriers; } /** * Retrieves list of excluded carrierInfos * * @return the list of excluded carrierInfos * @hide */ public @NonNull List<CarrierInfo> getExcludedCarriersInfoList() { return mExcludedCarrierInfo; } /** * Retrieves list of excluded carrierInfos * * @return the list of excluded carrierInfos * @hide */ public @NonNull List<CarrierInfo> getAllowedCarriersInfoList() { return mAllowedCarrierInfo; } /** * Retrieves the default behavior of carrier restrictions */ Loading Loading @@ -326,6 +416,10 @@ public final class CarrierRestrictionRules implements Parcelable { out.writeInt(mCarrierRestrictionDefault); out.writeInt(mMultiSimPolicy); out.writeInt(mCarrierRestrictionStatus); if (Flags.carrierRestrictionRulesEnhancement()) { out.writeTypedList(mAllowedCarrierInfo); out.writeTypedList(mExcludedCarrierInfo); } } /** Loading Loading @@ -357,7 +451,16 @@ public final class CarrierRestrictionRules implements Parcelable { public String toString() { return "CarrierRestrictionRules(allowed:" + mAllowedCarriers + ", excluded:" + mExcludedCarriers + ", default:" + mCarrierRestrictionDefault + ", multisim policy:" + mMultiSimPolicy + ")"; + ", multisim policy:" + mMultiSimPolicy + getCarrierInfoList() + ")"; } private String getCarrierInfoList() { if (Flags.carrierRestrictionRulesEnhancement()) { return ", allowedCarrierInfoList:" + mAllowedCarrierInfo + ", excludedCarrierInfoList:" + mExcludedCarrierInfo; } else { return ""; } } /** Loading @@ -382,6 +485,12 @@ public final class CarrierRestrictionRules implements Parcelable { mRules.mAllowedCarriers.clear(); mRules.mExcludedCarriers.clear(); mRules.mCarrierRestrictionDefault = CARRIER_RESTRICTION_DEFAULT_ALLOWED; if (Flags.carrierRestrictionRulesEnhancement()) { mRules.mCarrierRestrictionStatus = TelephonyManager.CARRIER_RESTRICTION_STATUS_NOT_RESTRICTED; mRules.mAllowedCarrierInfo.clear(); mRules.mExcludedCarrierInfo.clear(); } return this; } Loading Loading @@ -439,5 +548,29 @@ public final class CarrierRestrictionRules implements Parcelable { mRules.mCarrierRestrictionStatus = carrierRestrictionStatus; return this; } /** * Set list of allowed carrierInfo * * @param allowedCarrierInfo list of allowed CarrierInfo * @hide */ public @NonNull Builder setAllowedCarrierInfo( @NonNull List<CarrierInfo> allowedCarrierInfo) { mRules.mAllowedCarrierInfo = new ArrayList<CarrierInfo>(allowedCarrierInfo); return this; } /** * Set list of allowed carrierInfo * * @param excludedCarrierInfo list of allowed CarrierInfo * @hide */ public @NonNull Builder setExcludedCarrierInfo( @NonNull List<CarrierInfo> excludedCarrierInfo) { mRules.mExcludedCarrierInfo = new ArrayList<CarrierInfo>(excludedCarrierInfo); return this; } } } Loading
telephony/java/android/telephony/CarrierInfo.java 0 → 100644 +236 −0 Original line number Diff line number Diff line /* * Copyright (C) 2024 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.telephony; import android.annotation.Nullable; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; import androidx.annotation.NonNull; import com.android.telephony.Rlog; import java.util.ArrayList; import java.util.List; /** * CarrierInfo that is used to represent the carrier lock information details. * * @hide */ public final class CarrierInfo implements Parcelable { /** * Used to create a {@link CarrierInfo} from a {@link Parcel}. * * @hide */ public static final @android.annotation.NonNull Creator<CarrierInfo> CREATOR = new Creator<CarrierInfo>() { /** * Create a new instance of the Parcelable class, instantiating it * from the given Parcel whose data had previously been written by * {@link Parcelable#writeToParcel Parcelable.writeToParcel()}. * * @param source The Parcel to read the object's data from. * @return Returns a new instance of the Parcelable class. */ @Override public CarrierInfo createFromParcel(Parcel source) { return new CarrierInfo(source); } /** * Create a new array of the Parcelable class. * * @param size Size of the array. * @return Returns an array of the Parcelable class, with every entry * initialized to null. */ @Override public CarrierInfo[] newArray(int size) { return new CarrierInfo[size]; } }; @NonNull private String mMcc; @NonNull private String mMnc; @Nullable private String mSpn; @Nullable private String mGid1; @Nullable private String mGid2; @Nullable private String mImsiPrefix; /** Ehplmn is String combination of MCC,MNC */ @Nullable private List<String> mEhplmn; @Nullable private String mIccid; @Nullable private String mImpi; /** @hide */ @NonNull public String getMcc() { return mMcc; } /** @hide */ @NonNull public String getMnc() { return mMnc; } /** @hide */ @Nullable public String getSpn() { return mSpn; } /** @hide */ @Nullable public String getGid1() { return mGid1; } /** @hide */ @Nullable public String getGid2() { return mGid2; } /** @hide */ @Nullable public String getImsiPrefix() { return mImsiPrefix; } /** @hide */ @Nullable public String getIccid() { return mIccid; } /** @hide */ @Nullable public String getImpi() { return mImpi; } /** * Returns the list of EHPLMN. * * @return List of String that represent Ehplmn. * @hide */ @NonNull public List<String> getEhplmn() { return mEhplmn; } /** @hide */ public CarrierInfo(@NonNull String mcc, @NonNull String mnc, @Nullable String spn, @Nullable String gid1, @Nullable String gid2, @Nullable String imsi, @Nullable String iccid, @Nullable String impi, @Nullable List<String> plmnArrayList) { mMcc = mcc; mMnc = mnc; mSpn = spn; mGid1 = gid1; mGid2 = gid2; mImsiPrefix = imsi; mIccid = iccid; mImpi = impi; mEhplmn = plmnArrayList; } /** * Describe the kinds of special objects contained in this Parcelable * instance's marshaled representation. For example, if the object will * include a file descriptor in the output of {@link #writeToParcel(Parcel, int)}, * the return value of this method must include the * {@link #CONTENTS_FILE_DESCRIPTOR} bit. * * @return a bitmask indicating the set of special object types marshaled * by this Parcelable object instance. * @hide */ @Override public int describeContents() { return 0; } /** * Flatten this object in to a Parcel. * * @param dest The Parcel in which the object should be written. * @param flags Additional flags about how the object should be written. * May be 0 or {@link #PARCELABLE_WRITE_RETURN_VALUE}. * @hide */ @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeString8(mMcc); dest.writeString8(mMnc); dest.writeString8(mSpn); dest.writeString8(mGid1); dest.writeString8(mGid2); dest.writeString8(mImsiPrefix); dest.writeString8(mIccid); dest.writeString8(mImpi); dest.writeStringList(mEhplmn); } /** @hide */ public CarrierInfo(Parcel in) { mEhplmn = new ArrayList<String>(); mMcc = in.readString8(); mMnc = in.readString8(); mSpn = in.readString8(); mGid1 = in.readString8(); mGid2 = in.readString8(); mImsiPrefix = in.readString8(); mIccid = in.readString8(); mImpi = in.readString8(); in.readStringList(mEhplmn); } /** @hide */ @android.annotation.NonNull @Override public String toString() { return "CarrierInfo MCC = " + mMcc + " MNC = " + mMnc + " SPN = " + mSpn + " GID1 = " + mGid1 + " GID2 = " + mGid2 + " IMSI = " + getPrintableImsi() + " ICCID = " + SubscriptionInfo.getPrintableId(mIccid) + " IMPI = " + mImpi + " EHPLMN = [ " + getEhplmn_toString() + " ]"; } private String getEhplmn_toString() { return String.join(" ", mEhplmn); } private String getPrintableImsi() { boolean enablePiiLog = Rlog.isLoggable("CarrierInfo", Log.VERBOSE); return ((mImsiPrefix != null && mImsiPrefix.length() > 6) ? mImsiPrefix.substring(0, 6) + Rlog.pii(enablePiiLog, mImsiPrefix.substring(6)) : mImsiPrefix); } }
telephony/java/android/telephony/CarrierRestrictionRules.java +137 −4 Original line number Diff line number Diff line Loading @@ -84,13 +84,75 @@ public final class CarrierRestrictionRules implements Parcelable { /** The same configuration is applied to all SIM slots independently. */ public static final int MULTISIM_POLICY_NONE = 0; /** Any SIM card can be used as far as one SIM card matching the configuration is present. */ /** * Indicates that any SIM card can be used as far as one valid card is present in the device. * For the modem, a SIM card is valid when its content (i.e. MCC, MNC, GID, SPN) matches the * carrier restriction configuration. */ public static final int MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT = 1; /** * Indicates that the SIM lock policy applies uniformly to all sim slots. * @hide */ public static final int MULTISIM_POLICY_APPLY_TO_ALL_SLOTS = 2; /** * The SIM lock configuration applies exclusively to sim slot 1, leaving * all other sim slots unlocked irrespective of the SIM card in slot 1 * @hide */ public static final int MULTISIM_POLICY_APPLY_TO_ONLY_SLOT_1 = 3; /** * Valid sim cards must be present on sim slot1 in order * to use other sim slots. * @hide */ public static final int MULTISIM_POLICY_VALID_SIM_MUST_PRESENT_ON_SLOT_1 = 4; /** * Valid sim card must be present on slot1 and it must be in full service * in order to use other sim slots. * @hide */ public static final int MULTISIM_POLICY_ACTIVE_SERVICE_ON_SLOT_1_TO_UNBLOCK_OTHER_SLOTS = 5; /** * Valid sim card be present on any slot and it must be in full service * in order to use other sim slots. * @hide */ public static final int MULTISIM_POLICY_ACTIVE_SERVICE_ON_ANY_SLOT_TO_UNBLOCK_OTHER_SLOTS = 6; /** * Valid sim cards must be present on all slots. If any SIM cards become * invalid then device would set other SIM cards as invalid as well. * @hide */ public static final int MULTISIM_POLICY_ALL_SIMS_MUST_BE_VALID = 7; /** * In case there is no match policy listed above. * @hide */ public static final int MULTISIM_POLICY_SLOT_POLICY_OTHER = 8; /** @hide */ @Retention(RetentionPolicy.SOURCE) @IntDef(prefix = "MULTISIM_POLICY_", value = {MULTISIM_POLICY_NONE, MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT}) value = {MULTISIM_POLICY_NONE, MULTISIM_POLICY_ONE_VALID_SIM_MUST_BE_PRESENT, MULTISIM_POLICY_APPLY_TO_ALL_SLOTS, MULTISIM_POLICY_APPLY_TO_ONLY_SLOT_1, MULTISIM_POLICY_VALID_SIM_MUST_PRESENT_ON_SLOT_1, MULTISIM_POLICY_ACTIVE_SERVICE_ON_SLOT_1_TO_UNBLOCK_OTHER_SLOTS, MULTISIM_POLICY_ACTIVE_SERVICE_ON_ANY_SLOT_TO_UNBLOCK_OTHER_SLOTS, MULTISIM_POLICY_ALL_SIMS_MUST_BE_VALID, MULTISIM_POLICY_SLOT_POLICY_OTHER }) public @interface MultiSimPolicy {} /** @hide */ Loading @@ -104,6 +166,8 @@ public final class CarrierRestrictionRules implements Parcelable { private List<CarrierIdentifier> mAllowedCarriers; private List<CarrierIdentifier> mExcludedCarriers; private List<CarrierInfo> mAllowedCarrierInfo; private List<CarrierInfo> mExcludedCarrierInfo; @CarrierRestrictionDefault private int mCarrierRestrictionDefault; @MultiSimPolicy Loading @@ -114,6 +178,8 @@ public final class CarrierRestrictionRules implements Parcelable { private CarrierRestrictionRules() { mAllowedCarriers = new ArrayList<CarrierIdentifier>(); mExcludedCarriers = new ArrayList<CarrierIdentifier>(); mAllowedCarrierInfo = new ArrayList<CarrierInfo>(); mExcludedCarrierInfo = new ArrayList<CarrierInfo>(); mCarrierRestrictionDefault = CARRIER_RESTRICTION_DEFAULT_NOT_ALLOWED; mMultiSimPolicy = MULTISIM_POLICY_NONE; mCarrierRestrictionStatus = TelephonyManager.CARRIER_RESTRICTION_STATUS_UNKNOWN; Loading @@ -122,12 +188,17 @@ public final class CarrierRestrictionRules implements Parcelable { private CarrierRestrictionRules(Parcel in) { mAllowedCarriers = new ArrayList<CarrierIdentifier>(); mExcludedCarriers = new ArrayList<CarrierIdentifier>(); mAllowedCarrierInfo = new ArrayList<CarrierInfo>(); mExcludedCarrierInfo = new ArrayList<CarrierInfo>(); in.readTypedList(mAllowedCarriers, CarrierIdentifier.CREATOR); in.readTypedList(mExcludedCarriers, CarrierIdentifier.CREATOR); mCarrierRestrictionDefault = in.readInt(); mMultiSimPolicy = in.readInt(); mCarrierRestrictionStatus = in.readInt(); if (Flags.carrierRestrictionRulesEnhancement()) { in.readTypedList(mAllowedCarrierInfo, CarrierInfo.CREATOR); in.readTypedList(mExcludedCarrierInfo, CarrierInfo.CREATOR); } } /** Loading Loading @@ -164,6 +235,25 @@ public final class CarrierRestrictionRules implements Parcelable { return mExcludedCarriers; } /** * Retrieves list of excluded carrierInfos * * @return the list of excluded carrierInfos * @hide */ public @NonNull List<CarrierInfo> getExcludedCarriersInfoList() { return mExcludedCarrierInfo; } /** * Retrieves list of excluded carrierInfos * * @return the list of excluded carrierInfos * @hide */ public @NonNull List<CarrierInfo> getAllowedCarriersInfoList() { return mAllowedCarrierInfo; } /** * Retrieves the default behavior of carrier restrictions */ Loading Loading @@ -326,6 +416,10 @@ public final class CarrierRestrictionRules implements Parcelable { out.writeInt(mCarrierRestrictionDefault); out.writeInt(mMultiSimPolicy); out.writeInt(mCarrierRestrictionStatus); if (Flags.carrierRestrictionRulesEnhancement()) { out.writeTypedList(mAllowedCarrierInfo); out.writeTypedList(mExcludedCarrierInfo); } } /** Loading Loading @@ -357,7 +451,16 @@ public final class CarrierRestrictionRules implements Parcelable { public String toString() { return "CarrierRestrictionRules(allowed:" + mAllowedCarriers + ", excluded:" + mExcludedCarriers + ", default:" + mCarrierRestrictionDefault + ", multisim policy:" + mMultiSimPolicy + ")"; + ", multisim policy:" + mMultiSimPolicy + getCarrierInfoList() + ")"; } private String getCarrierInfoList() { if (Flags.carrierRestrictionRulesEnhancement()) { return ", allowedCarrierInfoList:" + mAllowedCarrierInfo + ", excludedCarrierInfoList:" + mExcludedCarrierInfo; } else { return ""; } } /** Loading @@ -382,6 +485,12 @@ public final class CarrierRestrictionRules implements Parcelable { mRules.mAllowedCarriers.clear(); mRules.mExcludedCarriers.clear(); mRules.mCarrierRestrictionDefault = CARRIER_RESTRICTION_DEFAULT_ALLOWED; if (Flags.carrierRestrictionRulesEnhancement()) { mRules.mCarrierRestrictionStatus = TelephonyManager.CARRIER_RESTRICTION_STATUS_NOT_RESTRICTED; mRules.mAllowedCarrierInfo.clear(); mRules.mExcludedCarrierInfo.clear(); } return this; } Loading Loading @@ -439,5 +548,29 @@ public final class CarrierRestrictionRules implements Parcelable { mRules.mCarrierRestrictionStatus = carrierRestrictionStatus; return this; } /** * Set list of allowed carrierInfo * * @param allowedCarrierInfo list of allowed CarrierInfo * @hide */ public @NonNull Builder setAllowedCarrierInfo( @NonNull List<CarrierInfo> allowedCarrierInfo) { mRules.mAllowedCarrierInfo = new ArrayList<CarrierInfo>(allowedCarrierInfo); return this; } /** * Set list of allowed carrierInfo * * @param excludedCarrierInfo list of allowed CarrierInfo * @hide */ public @NonNull Builder setExcludedCarrierInfo( @NonNull List<CarrierInfo> excludedCarrierInfo) { mRules.mExcludedCarrierInfo = new ArrayList<CarrierInfo>(excludedCarrierInfo); return this; } } }