Files
frameworks_base/telephony/java/android/telephony/UiccCardInfo.java
Jordan Liu 6c8e0f3f53 Update getUiccCardsInfo doc
This method will return info for inactive eUICCs, filtered by carrier
privilege. (Since we can't read carrier privilege on an inactive eUICC,
we always assume that the caller does not have carrier privilege).

Bug: 130826215
Test: manual
Change-Id: Id89fa48f119004b6c18bd21791396bc6c3df2c95
2019-04-25 13:32:21 -07:00

196 lines
5.6 KiB
Java

/*
* 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.NonNull;
import android.annotation.Nullable;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.Objects;
/**
* The UiccCardInfo represents information about a currently inserted UICC or embedded eUICC.
*/
public final class UiccCardInfo implements Parcelable {
private final boolean mIsEuicc;
private final int mCardId;
private final String mEid;
private final String mIccId;
private final int mSlotIndex;
private final boolean mIsRemovable;
public static final @android.annotation.NonNull 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();
mIsRemovable = in.readByte() != 0;
}
@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);
dest.writeByte((byte) (mIsRemovable ? 1 : 0));
}
@Override
public int describeContents() {
return 0;
}
/**
* @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 UICC 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()}), or the EID is not available, returns null.
* <p>
* Note that this field may be omitted if the caller does not have the correct permissions
* (see {@link TelephonyManager#getUiccCardsInfo()}).
*/
@Nullable
public String getEid() {
if (!mIsEuicc) {
return null;
}
return mEid;
}
/**
* Get the ICCID of the UICC. If the ICCID is not availble, returns null.
* <p>
* Note that this field may be omitted if the caller does not have the correct permissions
* (see {@link TelephonyManager#getUiccCardsInfo()}).
*/
@Nullable
public String getIccId() {
return mIccId;
}
/**
* Gets the slot index for the slot that the UICC is currently inserted in.
*/
public int getSlotIndex() {
return mSlotIndex;
}
/**
* Returns a copy of the UiccCardinfo with the EID and ICCID set to null. These values are
* generally private and require carrier privileges to view.
*
* @hide
*/
@NonNull
public UiccCardInfo getUnprivileged() {
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
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)
&& (mIsRemovable == that.mIsRemovable));
}
@Override
public int hashCode() {
return Objects.hash(mIsEuicc, mCardId, mEid, mIccId, mSlotIndex, mIsRemovable);
}
@Override
public String toString() {
return "UiccCardInfo (mIsEuicc="
+ mIsEuicc
+ ", mCardId="
+ mCardId
+ ", mEid="
+ mEid
+ ", mIccId="
+ mIccId
+ ", mSlotIndex="
+ mSlotIndex
+ ", mIsRemovable="
+ mIsRemovable
+ ")";
}
}