Files
frameworks_base/telephony/java/android/telephony/UiccSlotInfo.java
Aurimas Liutikas 1da3bde08d Add missing nullability annotations.
To prepare for enabling MissingNullability Metalava check this CL
works on adding missing nullability issues that metalava flags if
we tell it to flag new things since API 29.

This is not a complete CL, mostly addresses public api and
toString/equals for @SystemApi

Exempt-From-Owner-Approval: Large scale nullability clean up
Bug: 124515653
Test: make -j checkapi
Merged-In: I109260842cfc25f06e40694997fcbb4afa02c867
Change-Id: I109260842cfc25f06e40694997fcbb4afa02c867
2019-08-30 00:16:24 +00:00

235 lines
7.2 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.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
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;
/**
* Class for the information of a UICC slot.
* @hide
*/
@SystemApi
public class UiccSlotInfo implements Parcelable {
/**
* Card state.
* @hide
*/
@Retention(RetentionPolicy.SOURCE)
@IntDef(prefix = { "CARD_STATE_INFO_" }, value = {
CARD_STATE_INFO_ABSENT,
CARD_STATE_INFO_PRESENT,
CARD_STATE_INFO_ERROR,
CARD_STATE_INFO_RESTRICTED
})
public @interface CardStateInfo {}
/** Card state absent. */
public static final int CARD_STATE_INFO_ABSENT = 1;
/** Card state present. */
public static final int CARD_STATE_INFO_PRESENT = 2;
/** Card state error. */
public static final int CARD_STATE_INFO_ERROR = 3;
/** Card state restricted. */
public static final int CARD_STATE_INFO_RESTRICTED = 4;
private final boolean mIsActive;
private final boolean mIsEuicc;
private final String mCardId;
private final @CardStateInfo int mCardStateInfo;
private final int mLogicalSlotIdx;
private final boolean mIsExtendedApduSupported;
private final boolean mIsRemovable;
public static final @android.annotation.NonNull Creator<UiccSlotInfo> CREATOR = new Creator<UiccSlotInfo>() {
@Override
public UiccSlotInfo createFromParcel(Parcel in) {
return new UiccSlotInfo(in);
}
@Override
public UiccSlotInfo[] newArray(int size) {
return new UiccSlotInfo[size];
}
};
private UiccSlotInfo(Parcel in) {
mIsActive = in.readByte() != 0;
mIsEuicc = in.readByte() != 0;
mCardId = in.readString();
mCardStateInfo = in.readInt();
mLogicalSlotIdx = in.readInt();
mIsExtendedApduSupported = in.readByte() != 0;
mIsRemovable = in.readByte() != 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeByte((byte) (mIsActive ? 1 : 0));
dest.writeByte((byte) (mIsEuicc ? 1 : 0));
dest.writeString(mCardId);
dest.writeInt(mCardStateInfo);
dest.writeInt(mLogicalSlotIdx);
dest.writeByte((byte) (mIsExtendedApduSupported ? 1 : 0));
dest.writeByte((byte) (mIsRemovable ? 1 : 0));
}
@Override
public int describeContents() {
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;
this.mIsEuicc = isEuicc;
this.mCardId = cardId;
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() {
return mIsActive;
}
public boolean getIsEuicc() {
return mIsEuicc;
}
/**
* Returns the ICCID of the card in the slot, or the EID of an active eUICC.
* <p>
* If the UICC slot is for an active eUICC, returns the EID.
* If the UICC slot is for an inactive eUICC, returns the ICCID of the enabled profile, or the
* root profile if all other profiles are disabled.
* If the UICC slot is not an eUICC, returns the ICCID.
*/
public String getCardId() {
return mCardId;
}
@CardStateInfo
public int getCardStateInfo() {
return mCardStateInfo;
}
public int getLogicalSlotIdx() {
return mLogicalSlotIdx;
}
/**
* @return {@code true} if this slot supports extended APDU from ATR, {@code false} otherwise.
*/
public boolean getIsExtendedApduSupported() {
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(@Nullable Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
UiccSlotInfo that = (UiccSlotInfo) obj;
return (mIsActive == that.mIsActive)
&& (mIsEuicc == that.mIsEuicc)
&& (Objects.equals(mCardId, that.mCardId))
&& (mCardStateInfo == that.mCardStateInfo)
&& (mLogicalSlotIdx == that.mLogicalSlotIdx)
&& (mIsExtendedApduSupported == that.mIsExtendedApduSupported)
&& (mIsRemovable == that.mIsRemovable);
}
@Override
public int hashCode() {
int result = 1;
result = 31 * result + (mIsActive ? 1 : 0);
result = 31 * result + (mIsEuicc ? 1 : 0);
result = 31 * result + Objects.hashCode(mCardId);
result = 31 * result + mCardStateInfo;
result = 31 * result + mLogicalSlotIdx;
result = 31 * result + (mIsExtendedApduSupported ? 1 : 0);
result = 31 * result + (mIsRemovable ? 1 : 0);
return result;
}
@NonNull
@Override
public String toString() {
return "UiccSlotInfo (mIsActive="
+ mIsActive
+ ", mIsEuicc="
+ mIsEuicc
+ ", mCardId="
+ mCardId
+ ", cardState="
+ mCardStateInfo
+ ", phoneId="
+ mLogicalSlotIdx
+ ", mIsExtendedApduSupported="
+ mIsExtendedApduSupported
+ ", mIsRemovable="
+ mIsRemovable
+ ")";
}
}