diff options
| author | 2018-12-26 08:35:35 -0800 | |
|---|---|---|
| committer | 2018-12-26 08:35:35 -0800 | |
| commit | da2cdd3596d38eb4476672ef1d2b946d0a62d812 (patch) | |
| tree | 778c52dc716cb173cf0cafa8a5efc4edb8d559cb | |
| parent | 8d73c6ec1665b9efbe2501f7e910f1a9c11e87c3 (diff) | |
| parent | a1ce4f0ec9854356168bd164d11e84d57042ebfd (diff) | |
Merge "Add UiccCardInfo APIs" am: 8acece0441
am: a1ce4f0ec9
Change-Id: I24b89cb46f6d9d8e4e0f9f24cde49090615ed007
| -rw-r--r-- | api/system-current.txt | 13 | ||||
| -rw-r--r-- | telephony/java/android/telephony/TelephonyManager.java | 23 | ||||
| -rw-r--r-- | telephony/java/android/telephony/UiccCardInfo.aidl | 19 | ||||
| -rw-r--r-- | telephony/java/android/telephony/UiccCardInfo.java | 156 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/ITelephony.aidl | 12 |
5 files changed, 223 insertions, 0 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index b7da316fb33a..4ec587b3c4f8 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5461,6 +5461,7 @@ package android.telephony { method public int getSimCardState(); method public int getSupportedRadioAccessFamily(); method public java.util.List<android.telephony.TelephonyHistogram> getTelephonyHistograms(); + method public android.telephony.UiccCardInfo[] getUiccCardsInfo(); method public android.telephony.UiccSlotInfo[] getUiccSlotsInfo(); method public android.os.Bundle getVisualVoicemailSettings(); method public int getVoiceActivationState(); @@ -5555,6 +5556,18 @@ package android.telephony { field public static final android.os.Parcelable.Creator<android.telephony.UiccAccessRule> CREATOR; } + public class UiccCardInfo implements android.os.Parcelable { + ctor public UiccCardInfo(boolean, int, java.lang.String, java.lang.String, int); + method public int describeContents(); + method public int getCardId(); + method public java.lang.String getEid(); + method public java.lang.String getIccId(); + method public int getSlotIndex(); + method public boolean isEuicc(); + method public void writeToParcel(android.os.Parcel, int); + field public static final android.os.Parcelable.Creator<android.telephony.UiccCardInfo> CREATOR; + } + public class UiccSlotInfo implements android.os.Parcelable { ctor public UiccSlotInfo(boolean, boolean, java.lang.String, int, int, boolean); method public int describeContents(); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 25d247b52ea6..3f062542698c 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -3147,6 +3147,29 @@ public class TelephonyManager { } /** + * Gets information about currently inserted UICCs and eUICCs. See {@link UiccCardInfo} for more + * details on the kind of information available. + * + * @return UiccCardInfo an array of UiccCardInfo objects, representing information on the + * currently inserted UICCs and eUICCs. + * + * @hide + */ + @SystemApi + @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + public UiccCardInfo[] getUiccCardsInfo() { + try { + ITelephony telephony = getITelephony(); + if (telephony == null) { + return null; + } + return telephony.getUiccCardsInfo(); + } catch (RemoteException e) { + return null; + } + } + + /** * Gets all the UICC slots. The objects in the array can be null if the slot info is not * available, which is possible between phone process starting and getting slot info from modem. * diff --git a/telephony/java/android/telephony/UiccCardInfo.aidl b/telephony/java/android/telephony/UiccCardInfo.aidl new file mode 100644 index 000000000000..882c2333909f --- /dev/null +++ b/telephony/java/android/telephony/UiccCardInfo.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2018 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; + +parcelable UiccCardInfo; diff --git a/telephony/java/android/telephony/UiccCardInfo.java b/telephony/java/android/telephony/UiccCardInfo.java new file mode 100644 index 000000000000..45e4704e8894 --- /dev/null +++ b/telephony/java/android/telephony/UiccCardInfo.java @@ -0,0 +1,156 @@ +/* + * Copyright (C) 2018 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.SystemApi; +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.Objects; + +/** + * The UiccCardInfo represents information about a currently inserted UICC or embedded eUICC. + * @hide + */ +@SystemApi +public class UiccCardInfo implements Parcelable { + + private final boolean mIsEuicc; + private final int mCardId; + private final String mEid; + private final String mIccId; + private final int mSlotIndex; + + public static final Creator<UiccCardInfo> CREATOR = new Creator<UiccCardInfo>() { + @Override + public UiccCardInfo createFromParcel(Parcel in) { + return new UiccCardInfo(in); + } + + @Override + public UiccCardInfo[] newArray(int size) { + return new UiccCardInfo[size]; + } + }; + + private UiccCardInfo(Parcel in) { + mIsEuicc = in.readByte() != 0; + mCardId = in.readInt(); + mEid = in.readString(); + mIccId = in.readString(); + mSlotIndex = in.readInt(); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeByte((byte) (mIsEuicc ? 1 : 0)); + dest.writeInt(mCardId); + dest.writeString(mEid); + dest.writeString(mIccId); + dest.writeInt(mSlotIndex); + } + + @Override + public int describeContents() { + return 0; + } + + public UiccCardInfo(boolean isEuicc, int cardId, String eid, String iccId, int slotIndex) { + this.mIsEuicc = isEuicc; + this.mCardId = cardId; + this.mEid = eid; + this.mIccId = iccId; + this.mSlotIndex = slotIndex; + } + + /** + * Return whether the UiccCardInfo is an eUICC. + * @return true if the UICC is an eUICC. + */ + public boolean isEuicc() { + return mIsEuicc; + } + + /** + * Get the card ID of the UICC. See {@link TelephonyManager#getCardIdForDefaultEuicc()} for more + * details on card ID. + */ + public int getCardId() { + return mCardId; + } + + /** + * Get the embedded ID (EID) of the eUICC. If the UiccCardInfo is not an eUICC + * (see {@link #isEuicc()}), returns null. + */ + public String getEid() { + if (!mIsEuicc) { + return null; + } + return mEid; + } + + /** + * Get the ICCID of the UICC. + */ + public String getIccId() { + return mIccId; + } + + /** + * Gets the slot index for the slot that the UICC is currently inserted in. + */ + public int getSlotIndex() { + return mSlotIndex; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null || getClass() != obj.getClass()) { + return false; + } + + UiccCardInfo that = (UiccCardInfo) obj; + return ((mIsEuicc == that.mIsEuicc) + && (mCardId == that.mCardId) + && (Objects.equals(mEid, that.mEid)) + && (Objects.equals(mIccId, that.mIccId)) + && (mSlotIndex == that.mSlotIndex)); + } + + @Override + public int hashCode() { + return Objects.hash(mIsEuicc, mCardId, mEid, mIccId, mSlotIndex); + } + + @Override + public String toString() { + return "UiccCardInfo (mIsEuicc=" + + mIsEuicc + + ", mCardId=" + + mCardId + + ", mEid=" + + mEid + + ", mIccId=" + + mIccId + + ", mSlotIndex=" + + mSlotIndex + + ")"; + } +} diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 378a8fb58101..b2e623cde3cb 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -56,6 +56,7 @@ import com.android.internal.telephony.OperatorInfo; import java.util.List; import java.util.Map; +import android.telephony.UiccCardInfo; import android.telephony.UiccSlotInfo; /** @@ -1494,6 +1495,17 @@ interface ITelephony { int getCardIdForDefaultEuicc(int subId, String callingPackage); /** + * Gets information about currently inserted UICCs and eUICCs. See {@link UiccCardInfo} for more + * details on the kind of information available. + * + * @return UiccCardInfo an array of UiccCardInfo objects, representing information on the + * currently inserted UICCs and eUICCs. + * + * @hide + */ + UiccCardInfo[] getUiccCardsInfo(); + + /** * Get slot info for all the UICC slots. * @return UiccSlotInfo array. * @hide |