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
209 lines
6.2 KiB
Java
209 lines
6.2 KiB
Java
/*
|
|
* Copyright (C) 2014 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.annotation.SystemApi;
|
|
import android.annotation.UnsupportedAppUsage;
|
|
import android.net.LinkProperties;
|
|
import android.os.Parcel;
|
|
import android.os.Parcelable;
|
|
import android.telephony.data.ApnSetting;
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
/**
|
|
* Contains precise data connection state.
|
|
*
|
|
* The following data connection information is included in returned PreciseDataConnectionState:
|
|
*
|
|
* <ul>
|
|
* <li>Data connection state.
|
|
* <li>Network type of the connection.
|
|
* <li>APN types.
|
|
* <li>APN.
|
|
* <li>The properties of the network link.
|
|
* <li>Data connection fail cause.
|
|
* </ul>
|
|
*
|
|
* @hide
|
|
*/
|
|
@SystemApi
|
|
public final class PreciseDataConnectionState implements Parcelable {
|
|
|
|
private @TelephonyManager.DataState int mState = TelephonyManager.DATA_UNKNOWN;
|
|
private @TelephonyManager.NetworkType int mNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
|
|
private @DataFailCause.FailCause int mFailCause = DataFailCause.NONE;
|
|
private @ApnSetting.ApnType int mAPNTypes = ApnSetting.TYPE_NONE;
|
|
private String mAPN = "";
|
|
private LinkProperties mLinkProperties = null;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @hide
|
|
*/
|
|
@UnsupportedAppUsage
|
|
public PreciseDataConnectionState(@TelephonyManager.DataState int state,
|
|
@TelephonyManager.NetworkType int networkType,
|
|
@ApnSetting.ApnType int apnTypes, String apn,
|
|
LinkProperties linkProperties,
|
|
@DataFailCause.FailCause int failCause) {
|
|
mState = state;
|
|
mNetworkType = networkType;
|
|
mAPNTypes = apnTypes;
|
|
mAPN = apn;
|
|
mLinkProperties = linkProperties;
|
|
mFailCause = failCause;
|
|
}
|
|
|
|
/**
|
|
* Empty Constructor
|
|
*
|
|
* @hide
|
|
*/
|
|
public PreciseDataConnectionState() {
|
|
}
|
|
|
|
/**
|
|
* Construct a PreciseDataConnectionState object from the given parcel.
|
|
*
|
|
* @hide
|
|
*/
|
|
private PreciseDataConnectionState(Parcel in) {
|
|
mState = in.readInt();
|
|
mNetworkType = in.readInt();
|
|
mAPNTypes = in.readInt();
|
|
mAPN = in.readString();
|
|
mLinkProperties = (LinkProperties)in.readParcelable(null);
|
|
mFailCause = in.readInt();
|
|
}
|
|
|
|
/**
|
|
* Returns the state of data connection that supported the apn types returned by
|
|
* {@link #getDataConnectionApnTypeBitMask()}
|
|
*/
|
|
public @TelephonyManager.DataState int getDataConnectionState() {
|
|
return mState;
|
|
}
|
|
|
|
/**
|
|
* Returns the network type associated with this data connection.
|
|
* @hide
|
|
*/
|
|
public @TelephonyManager.NetworkType int getDataConnectionNetworkType() {
|
|
return mNetworkType;
|
|
}
|
|
|
|
/**
|
|
* Returns the data connection APN types supported by this connection and triggers
|
|
* {@link PreciseDataConnectionState} change.
|
|
*/
|
|
public @ApnSetting.ApnType int getDataConnectionApnTypeBitMask() {
|
|
return mAPNTypes;
|
|
}
|
|
|
|
/**
|
|
* Returns APN {@link ApnSetting} of this data connection.
|
|
*/
|
|
@Nullable
|
|
public String getDataConnectionApn() {
|
|
return mAPN;
|
|
}
|
|
|
|
/**
|
|
* Get the properties of the network link {@link LinkProperties}.
|
|
* @hide
|
|
*/
|
|
@UnsupportedAppUsage
|
|
public LinkProperties getDataConnectionLinkProperties() {
|
|
return mLinkProperties;
|
|
}
|
|
|
|
/**
|
|
* Returns data connection fail cause, in case there was a failure.
|
|
*/
|
|
public @DataFailCause.FailCause int getDataConnectionFailCause() {
|
|
return mFailCause;
|
|
}
|
|
|
|
@Override
|
|
public int describeContents() {
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public void writeToParcel(Parcel out, int flags) {
|
|
out.writeInt(mState);
|
|
out.writeInt(mNetworkType);
|
|
out.writeInt(mAPNTypes);
|
|
out.writeString(mAPN);
|
|
out.writeParcelable(mLinkProperties, flags);
|
|
out.writeInt(mFailCause);
|
|
}
|
|
|
|
public static final @android.annotation.NonNull Parcelable.Creator<PreciseDataConnectionState> CREATOR
|
|
= new Parcelable.Creator<PreciseDataConnectionState>() {
|
|
|
|
public PreciseDataConnectionState createFromParcel(Parcel in) {
|
|
return new PreciseDataConnectionState(in);
|
|
}
|
|
|
|
public PreciseDataConnectionState[] newArray(int size) {
|
|
return new PreciseDataConnectionState[size];
|
|
}
|
|
};
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return Objects.hash(mState, mNetworkType, mAPNTypes, mAPN, mLinkProperties,
|
|
mFailCause);
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(@Nullable Object obj) {
|
|
|
|
if (!(obj instanceof PreciseDataConnectionState)) {
|
|
return false;
|
|
}
|
|
|
|
PreciseDataConnectionState other = (PreciseDataConnectionState) obj;
|
|
return Objects.equals(mAPN, other.mAPN) && mAPNTypes == other.mAPNTypes
|
|
&& mFailCause == other.mFailCause
|
|
&& Objects.equals(mLinkProperties, other.mLinkProperties)
|
|
&& mNetworkType == other.mNetworkType
|
|
&& mState == other.mState;
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public String toString() {
|
|
StringBuilder sb = new StringBuilder();
|
|
|
|
sb.append("Data Connection state: " + mState);
|
|
sb.append(", Network type: " + mNetworkType);
|
|
sb.append(", APN types: " + ApnSetting.getApnTypesStringFromBitmask(mAPNTypes));
|
|
sb.append(", APN: " + mAPN);
|
|
sb.append(", Link properties: " + mLinkProperties);
|
|
sb.append(", Fail cause: " + DataFailCause.toString(mFailCause));
|
|
|
|
return sb.toString();
|
|
}
|
|
}
|