diff options
| -rwxr-xr-x | api/current.txt | 2 | ||||
| -rw-r--r-- | api/system-current.txt | 3 | ||||
| -rw-r--r-- | core/res/res/values/arrays.xml | 16 | ||||
| -rw-r--r-- | core/res/res/values/symbols.xml | 2 | ||||
| -rw-r--r-- | telephony/java/android/telephony/UiccCardInfo.java | 31 | ||||
| -rw-r--r-- | telephony/java/android/telephony/UiccSlotInfo.java | 44 |
6 files changed, 88 insertions, 10 deletions
diff --git a/api/current.txt b/api/current.txt index 670dc722d0db..136a0bb6f228 100755 --- a/api/current.txt +++ b/api/current.txt @@ -43236,13 +43236,13 @@ package android.telephony { } public final class UiccCardInfo implements android.os.Parcelable { - ctor public UiccCardInfo(boolean, int, String, String, int); method public int describeContents(); method public int getCardId(); method public String getEid(); method public String getIccId(); method public int getSlotIndex(); method public boolean isEuicc(); + method public boolean isRemovable(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.telephony.UiccCardInfo> CREATOR; } diff --git a/api/system-current.txt b/api/system-current.txt index 41f35c091354..67ff89f19a97 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6476,7 +6476,7 @@ package android.telephony { } public class UiccSlotInfo implements android.os.Parcelable { - ctor public UiccSlotInfo(boolean, boolean, String, int, int, boolean); + ctor @Deprecated public UiccSlotInfo(boolean, boolean, String, int, int, boolean); method public int describeContents(); method public String getCardId(); method public int getCardStateInfo(); @@ -6484,6 +6484,7 @@ package android.telephony { method public boolean getIsEuicc(); method public boolean getIsExtendedApduSupported(); method public int getLogicalSlotIdx(); + method public boolean isRemovable(); method public void writeToParcel(android.os.Parcel, int); field public static final int CARD_STATE_INFO_ABSENT = 1; // 0x1 field public static final int CARD_STATE_INFO_ERROR = 3; // 0x3 diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index 733878b9882b..8f2d6c3e02f4 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -185,4 +185,20 @@ <item>@string/app_info</item> </string-array> + <!-- Device-specific array of SIM slot indexes which are are embedded eUICCs. + e.g. If a device has two physical slots with indexes 0, 1, and slot 1 is an + eUICC, then the value of this array should be: + <integer-array name="non_removable_euicc_slots"> + <item>1</item> + </integer-array> + If a device has three physical slots and slot 1 and 2 are eUICCs, then the value of + this array should be: + <integer-array name="non_removable_euicc_slots"> + <item>1</item> + <item>2</item> + </integer-array> + This is used to differentiate between removable eUICCs and built in eUICCs, and should + be set by OEMs for devices which use eUICCs. --> + <integer-array name="non_removable_euicc_slots"></integer-array> + </resources> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index dfa5158a4ba4..0c8089255edf 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2847,6 +2847,8 @@ <java-symbol type="array" name="resolver_target_actions_pin" /> <java-symbol type="array" name="resolver_target_actions_unpin" /> + <java-symbol type="array" name="non_removable_euicc_slots" /> + <java-symbol type="string" name="install_carrier_app_notification_title" /> <java-symbol type="string" name="install_carrier_app_notification_text" /> <java-symbol type="string" name="install_carrier_app_notification_text_app_name" /> diff --git a/telephony/java/android/telephony/UiccCardInfo.java b/telephony/java/android/telephony/UiccCardInfo.java index 19f357a14687..0192ffbe263c 100644 --- a/telephony/java/android/telephony/UiccCardInfo.java +++ b/telephony/java/android/telephony/UiccCardInfo.java @@ -30,6 +30,7 @@ public final class UiccCardInfo implements Parcelable { private final String mEid; private final String mIccId; private final int mSlotIndex; + private final boolean mIsRemovable; public static final Creator<UiccCardInfo> CREATOR = new Creator<UiccCardInfo>() { @Override @@ -49,6 +50,7 @@ public final class UiccCardInfo implements Parcelable { mEid = in.readString(); mIccId = in.readString(); mSlotIndex = in.readInt(); + mIsRemovable = in.readByte() != 0; } @Override @@ -58,6 +60,7 @@ public final class UiccCardInfo implements Parcelable { dest.writeString(mEid); dest.writeString(mIccId); dest.writeInt(mSlotIndex); + dest.writeByte((byte) (mIsRemovable ? 1 : 0)); } @Override @@ -65,16 +68,21 @@ public final class UiccCardInfo implements Parcelable { return 0; } - public UiccCardInfo(boolean isEuicc, int cardId, String eid, String iccId, int slotIndex) { + /** + * @hide + */ + public UiccCardInfo(boolean isEuicc, int cardId, String eid, String iccId, int slotIndex, + boolean isRemovable) { this.mIsEuicc = isEuicc; this.mCardId = cardId; this.mEid = eid; this.mIccId = iccId; this.mSlotIndex = slotIndex; + this.mIsRemovable = isRemovable; } /** - * Return whether the UiccCardInfo is an eUICC. + * Return whether the UICC is an eUICC. * @return true if the UICC is an eUICC. */ public boolean isEuicc() { @@ -127,7 +135,17 @@ public final class UiccCardInfo implements Parcelable { * @hide */ public UiccCardInfo getUnprivileged() { - return new UiccCardInfo(mIsEuicc, mCardId, null, null, mSlotIndex); + return new UiccCardInfo(mIsEuicc, mCardId, null, null, mSlotIndex, mIsRemovable); + } + + /** + * Return whether the UICC or eUICC is removable. + * <p> + * UICCs are generally removable, but eUICCs may be removable or built in to the device. + * @return true if the UICC or eUICC is removable + */ + public boolean isRemovable() { + return mIsRemovable; } @Override @@ -144,12 +162,13 @@ public final class UiccCardInfo implements Parcelable { && (mCardId == that.mCardId) && (Objects.equals(mEid, that.mEid)) && (Objects.equals(mIccId, that.mIccId)) - && (mSlotIndex == that.mSlotIndex)); + && (mSlotIndex == that.mSlotIndex) + && (mIsRemovable == that.mIsRemovable)); } @Override public int hashCode() { - return Objects.hash(mIsEuicc, mCardId, mEid, mIccId, mSlotIndex); + return Objects.hash(mIsEuicc, mCardId, mEid, mIccId, mSlotIndex, mIsRemovable); } @Override @@ -164,6 +183,8 @@ public final class UiccCardInfo implements Parcelable { + mIccId + ", mSlotIndex=" + mSlotIndex + + ", mIsRemovable=" + + mIsRemovable + ")"; } } diff --git a/telephony/java/android/telephony/UiccSlotInfo.java b/telephony/java/android/telephony/UiccSlotInfo.java index a39992b17f8e..93a7da04c56e 100644 --- a/telephony/java/android/telephony/UiccSlotInfo.java +++ b/telephony/java/android/telephony/UiccSlotInfo.java @@ -15,15 +15,15 @@ */ package android.telephony; +import android.annotation.IntDef; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Objects; -import android.annotation.IntDef; - /** * Class for the information of a UICC slot. * @hide @@ -61,6 +61,7 @@ public class UiccSlotInfo implements Parcelable { private final @CardStateInfo int mCardStateInfo; private final int mLogicalSlotIdx; private final boolean mIsExtendedApduSupported; + private final boolean mIsRemovable; public static final Creator<UiccSlotInfo> CREATOR = new Creator<UiccSlotInfo>() { @Override @@ -81,6 +82,7 @@ public class UiccSlotInfo implements Parcelable { mCardStateInfo = in.readInt(); mLogicalSlotIdx = in.readInt(); mIsExtendedApduSupported = in.readByte() != 0; + mIsRemovable = in.readByte() != 0; } @Override @@ -91,6 +93,7 @@ public class UiccSlotInfo implements Parcelable { dest.writeInt(mCardStateInfo); dest.writeInt(mLogicalSlotIdx); dest.writeByte((byte) (mIsExtendedApduSupported ? 1 : 0)); + dest.writeByte((byte) (mIsRemovable ? 1 : 0)); } @Override @@ -98,6 +101,11 @@ public class UiccSlotInfo implements Parcelable { return 0; } + /** + * Construct a UiccSlotInfo. + * @deprecated apps should not be constructing UiccSlotInfo objects + */ + @Deprecated public UiccSlotInfo(boolean isActive, boolean isEuicc, String cardId, @CardStateInfo int cardStateInfo, int logicalSlotIdx, boolean isExtendedApduSupported) { this.mIsActive = isActive; @@ -106,6 +114,22 @@ public class UiccSlotInfo implements Parcelable { this.mCardStateInfo = cardStateInfo; this.mLogicalSlotIdx = logicalSlotIdx; this.mIsExtendedApduSupported = isExtendedApduSupported; + this.mIsRemovable = false; + } + + /** + * @hide + */ + public UiccSlotInfo(boolean isActive, boolean isEuicc, String cardId, + @CardStateInfo int cardStateInfo, int logicalSlotIdx, boolean isExtendedApduSupported, + boolean isRemovable) { + this.mIsActive = isActive; + this.mIsEuicc = isEuicc; + this.mCardId = cardId; + this.mCardStateInfo = cardStateInfo; + this.mLogicalSlotIdx = logicalSlotIdx; + this.mIsExtendedApduSupported = isExtendedApduSupported; + this.mIsRemovable = isRemovable; } public boolean getIsActive() { @@ -136,6 +160,16 @@ public class UiccSlotInfo implements Parcelable { return mIsExtendedApduSupported; } + /** + * Return whether the UICC slot is for a removable UICC. + * <p> + * UICCs are generally removable, but eUICCs may be removable or built in to the device. + * @return true if the slot is for removable UICCs + */ + public boolean isRemovable() { + return mIsRemovable; + } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -151,7 +185,8 @@ public class UiccSlotInfo implements Parcelable { && (Objects.equals(mCardId, that.mCardId)) && (mCardStateInfo == that.mCardStateInfo) && (mLogicalSlotIdx == that.mLogicalSlotIdx) - && (mIsExtendedApduSupported == that.mIsExtendedApduSupported); + && (mIsExtendedApduSupported == that.mIsExtendedApduSupported) + && (mIsRemovable == that.mIsRemovable); } @Override @@ -163,6 +198,7 @@ public class UiccSlotInfo implements Parcelable { result = 31 * result + mCardStateInfo; result = 31 * result + mLogicalSlotIdx; result = 31 * result + (mIsExtendedApduSupported ? 1 : 0); + result = 31 * result + (mIsRemovable ? 1 : 0); return result; } @@ -180,6 +216,8 @@ public class UiccSlotInfo implements Parcelable { + mLogicalSlotIdx + ", mIsExtendedApduSupported=" + mIsExtendedApduSupported + + ", mIsRemovable=" + + mIsRemovable + ")"; } } |