Merge "precisedataState refactor part 3"

This commit is contained in:
Chen Xu
2019-01-11 18:11:37 +00:00
committed by Gerrit Code Review
8 changed files with 208 additions and 120 deletions

View File

@@ -43107,6 +43107,7 @@ package android.telephony {
field public static final int DATA_CONNECTING = 1; // 0x1
field public static final int DATA_DISCONNECTED = 0; // 0x0
field public static final int DATA_SUSPENDED = 3; // 0x3
field public static final int DATA_UNKNOWN = -1; // 0xffffffff
field public static final java.lang.String EXTRA_CALL_VOICEMAIL_INTENT = "android.telephony.extra.CALL_VOICEMAIL_INTENT";
field public static final java.lang.String EXTRA_CARRIER_ID = "android.telephony.extra.CARRIER_ID";
field public static final java.lang.String EXTRA_CARRIER_NAME = "android.telephony.extra.CARRIER_NAME";

View File

@@ -5061,6 +5061,87 @@ package android.telephony {
field public static final java.lang.String KEY_CARRIER_SETUP_APP_STRING = "carrier_setup_app_string";
}
public final class DataFailCause {
field public static final int ACTIVATION_REJECT_GGSN = 30; // 0x1e
field public static final int ACTIVATION_REJECT_UNSPECIFIED = 31; // 0x1f
field public static final int ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED = 65; // 0x41
field public static final int APN_TYPE_CONFLICT = 112; // 0x70
field public static final int AUTH_FAILURE_ON_EMERGENCY_CALL = 122; // 0x7a
field public static final int COMPANION_IFACE_IN_USE = 118; // 0x76
field public static final int CONDITIONAL_IE_ERROR = 100; // 0x64
field public static final int EMERGENCY_IFACE_ONLY = 116; // 0x74
field public static final int EMM_ACCESS_BARRED = 115; // 0x73
field public static final int EMM_ACCESS_BARRED_INFINITE_RETRY = 121; // 0x79
field public static final int ERROR_UNSPECIFIED = 65535; // 0xffff
field public static final int ESM_INFO_NOT_RECEIVED = 53; // 0x35
field public static final int FEATURE_NOT_SUPP = 40; // 0x28
field public static final int FILTER_SEMANTIC_ERROR = 44; // 0x2c
field public static final int FILTER_SYTAX_ERROR = 45; // 0x2d
field public static final int GPRS_REGISTRATION_FAIL = -2; // 0xfffffffe
field public static final int IFACE_AND_POL_FAMILY_MISMATCH = 120; // 0x78
field public static final int IFACE_MISMATCH = 117; // 0x75
field public static final int INSUFFICIENT_RESOURCES = 26; // 0x1a
field public static final int INTERNAL_CALL_PREEMPT_BY_HIGH_PRIO_APN = 114; // 0x72
field public static final int INVALID_MANDATORY_INFO = 96; // 0x60
field public static final int INVALID_PCSCF_ADDR = 113; // 0x71
field public static final int INVALID_TRANSACTION_ID = 81; // 0x51
field public static final int IP_ADDRESS_MISMATCH = 119; // 0x77
field public static final int LLC_SNDCP = 25; // 0x19
field public static final int LOST_CONNECTION = 65540; // 0x10004
field public static final int MESSAGE_INCORRECT_SEMANTIC = 95; // 0x5f
field public static final int MESSAGE_TYPE_UNSUPPORTED = 97; // 0x61
field public static final int MISSING_UNKNOWN_APN = 27; // 0x1b
field public static final int MSG_AND_PROTOCOL_STATE_UNCOMPATIBLE = 101; // 0x65
field public static final int MSG_TYPE_NONCOMPATIBLE_STATE = 98; // 0x62
field public static final int MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 55; // 0x37
field public static final int NAS_SIGNALLING = 14; // 0xe
field public static final int NETWORK_FAILURE = 38; // 0x26
field public static final int NONE = 0; // 0x0
field public static final int NSAPI_IN_USE = 35; // 0x23
field public static final int OEM_DCFAILCAUSE_1 = 4097; // 0x1001
field public static final int OEM_DCFAILCAUSE_10 = 4106; // 0x100a
field public static final int OEM_DCFAILCAUSE_11 = 4107; // 0x100b
field public static final int OEM_DCFAILCAUSE_12 = 4108; // 0x100c
field public static final int OEM_DCFAILCAUSE_13 = 4109; // 0x100d
field public static final int OEM_DCFAILCAUSE_14 = 4110; // 0x100e
field public static final int OEM_DCFAILCAUSE_15 = 4111; // 0x100f
field public static final int OEM_DCFAILCAUSE_2 = 4098; // 0x1002
field public static final int OEM_DCFAILCAUSE_3 = 4099; // 0x1003
field public static final int OEM_DCFAILCAUSE_4 = 4100; // 0x1004
field public static final int OEM_DCFAILCAUSE_5 = 4101; // 0x1005
field public static final int OEM_DCFAILCAUSE_6 = 4102; // 0x1006
field public static final int OEM_DCFAILCAUSE_7 = 4103; // 0x1007
field public static final int OEM_DCFAILCAUSE_8 = 4104; // 0x1008
field public static final int OEM_DCFAILCAUSE_9 = 4105; // 0x1009
field public static final int ONLY_IPV4_ALLOWED = 50; // 0x32
field public static final int ONLY_IPV6_ALLOWED = 51; // 0x33
field public static final int ONLY_SINGLE_BEARER_ALLOWED = 52; // 0x34
field public static final int OPERATOR_BARRED = 8; // 0x8
field public static final int PDN_CONN_DOES_NOT_EXIST = 54; // 0x36
field public static final int PDP_WITHOUT_ACTIVE_TFT = 46; // 0x2e
field public static final int PREF_RADIO_TECH_CHANGED = -4; // 0xfffffffc
field public static final int PROTOCOL_ERRORS = 111; // 0x6f
field public static final int QOS_NOT_ACCEPTED = 37; // 0x25
field public static final int RADIO_NOT_AVAILABLE = 65537; // 0x10001
field public static final int RADIO_POWER_OFF = -5; // 0xfffffffb
field public static final int REGISTRATION_FAIL = -1; // 0xffffffff
field public static final int REGULAR_DEACTIVATION = 36; // 0x24
field public static final int SERVICE_OPTION_NOT_SUBSCRIBED = 33; // 0x21
field public static final int SERVICE_OPTION_NOT_SUPPORTED = 32; // 0x20
field public static final int SERVICE_OPTION_OUT_OF_ORDER = 34; // 0x22
field public static final int SIGNAL_LOST = -3; // 0xfffffffd
field public static final int TETHERED_CALL_ACTIVE = -6; // 0xfffffffa
field public static final int TFT_SEMANTIC_ERROR = 41; // 0x29
field public static final int TFT_SYTAX_ERROR = 42; // 0x2a
field public static final int UMTS_REACTIVATION_REQ = 39; // 0x27
field public static final int UNKNOWN = 65536; // 0x10000
field public static final int UNKNOWN_INFO_ELEMENT = 99; // 0x63
field public static final int UNKNOWN_PDP_ADDRESS_TYPE = 28; // 0x1c
field public static final int UNKNOWN_PDP_CONTEXT = 43; // 0x2b
field public static final int UNSUPPORTED_APN_IN_CURRENT_PLMN = 66; // 0x42
field public static final int USER_AUTHENTICATION = 29; // 0x1d
}
public class DisconnectCause {
field public static final int ALREADY_DIALING = 72; // 0x48
field public static final int ANSWERED_ELSEWHERE = 52; // 0x34
@@ -5228,11 +5309,13 @@ package android.telephony {
public class PhoneStateListener {
method public void onCallDisconnectCauseChanged(int, int);
method public void onPreciseCallStateChanged(android.telephony.PreciseCallState);
method public void onPreciseDataConnectionStateChanged(android.telephony.PreciseDataConnectionState);
method public void onRadioPowerStateChanged(int);
method public void onSrvccStateChanged(int);
method public void onVoiceActivationStateChanged(int);
field public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000
field public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
field public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
field public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
field public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
field public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
@@ -5257,6 +5340,16 @@ package android.telephony {
field public static final int PRECISE_CALL_STATE_WAITING = 6; // 0x6
}
public final class PreciseDataConnectionState implements android.os.Parcelable {
method public int describeContents();
method public java.lang.String getDataConnectionApn();
method public int getDataConnectionApnTypeBitMask();
method public int getDataConnectionFailCause();
method public int getDataConnectionState();
method public void writeToParcel(android.os.Parcel, int);
field public static final android.os.Parcelable.Creator<android.telephony.PreciseDataConnectionState> CREATOR;
}
public class PreciseDisconnectCause {
field public static final int ACCESS_CLASS_BLOCKED = 260; // 0x104
field public static final int ACCESS_INFORMATION_DISCARDED = 43; // 0x2b

View File

@@ -34,6 +34,7 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.telephony.CellInfo;
import android.telephony.CellLocation;
import android.telephony.DataFailCause;
import android.telephony.DisconnectCause;
import android.telephony.LocationAccessPolicy;
import android.telephony.PhoneCapability;
@@ -47,6 +48,7 @@ import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
import android.telephony.emergency.EmergencyNumber;
import android.util.LocalLog;
import android.util.StatsLog;
@@ -1366,7 +1368,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
mDataConnectionNetworkType[phoneId] = networkType;
}
mPreciseDataConnectionState = new PreciseDataConnectionState(state, networkType,
apnType, apn, linkProperties, "");
ApnSetting.getApnTypesBitmaskFromString(apnType), apn,
linkProperties, DataFailCause.NONE);
for (Record r : mRecords) {
if (r.matchPhoneStateListenerEvent(
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE)) {
@@ -1384,7 +1387,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
broadcastDataConnectionStateChanged(state, isDataAllowed, apn, apnType, linkProperties,
networkCapabilities, roaming, subId);
broadcastPreciseDataConnectionStateChanged(state, networkType, apnType, apn,
linkProperties, "");
linkProperties, DataFailCause.NONE);
}
public void notifyDataConnectionFailed(String apnType) {
@@ -1403,7 +1406,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
synchronized (mRecords) {
mPreciseDataConnectionState = new PreciseDataConnectionState(
TelephonyManager.DATA_UNKNOWN,TelephonyManager.NETWORK_TYPE_UNKNOWN,
apnType, "", null, "");
ApnSetting.getApnTypesBitmaskFromString(apnType), "", null,
DataFailCause.NONE);
for (Record r : mRecords) {
if (r.matchPhoneStateListenerEvent(
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE)) {
@@ -1418,7 +1422,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
broadcastDataConnectionFailed(apnType, subId);
broadcastPreciseDataConnectionStateChanged(TelephonyManager.DATA_UNKNOWN,
TelephonyManager.NETWORK_TYPE_UNKNOWN, apnType, "", null, "");
TelephonyManager.NETWORK_TYPE_UNKNOWN, apnType, "", null,
DataFailCause.NONE);
}
public void notifyCellLocation(Bundle cellLocation) {
@@ -1528,14 +1533,15 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
}
public void notifyPreciseDataConnectionFailed(String apnType, String apn, String failCause) {
public void notifyPreciseDataConnectionFailed(String apnType,
String apn, @DataFailCause.FailCause int failCause) {
if (!checkNotifyPermission("notifyPreciseDataConnectionFailed()")) {
return;
}
synchronized (mRecords) {
mPreciseDataConnectionState = new PreciseDataConnectionState(
TelephonyManager.DATA_UNKNOWN, TelephonyManager.NETWORK_TYPE_UNKNOWN,
apnType, apn, null, failCause);
ApnSetting.getApnTypesBitmaskFromString(apnType), apn, null, failCause);
for (Record r : mRecords) {
if (r.matchPhoneStateListenerEvent(
PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE)) {
@@ -1929,9 +1935,8 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
}
private void broadcastPreciseDataConnectionStateChanged(int state, int networkType,
String apnType, String apn,
LinkProperties linkProperties,
String failCause) {
String apnType, String apn, LinkProperties linkProperties,
@DataFailCause.FailCause int failCause) {
Intent intent = new Intent(TelephonyManager.ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED);
intent.putExtra(PhoneConstants.STATE_KEY, state);
intent.putExtra(PhoneConstants.DATA_NETWORK_TYPE_KEY, networkType);
@@ -1940,7 +1945,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
if (linkProperties != null) {
intent.putExtra(PhoneConstants.DATA_LINK_PROPERTIES_KEY, linkProperties);
}
if (failCause != null) intent.putExtra(PhoneConstants.DATA_FAILURE_CAUSE_KEY, failCause);
intent.putExtra(PhoneConstants.DATA_FAILURE_CAUSE_KEY, failCause);
mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
android.Manifest.permission.READ_PRECISE_PHONE_STATE);

View File

@@ -17,6 +17,7 @@ package android.telephony;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.content.Context;
import android.os.PersistableBundle;
@@ -34,6 +35,7 @@ import java.util.Set;
* Returned as the reason for a data connection failure as defined by modem and some local errors.
* @hide
*/
@SystemApi
public final class DataFailCause {
/** There is no failure */
public static final int NONE = 0;
@@ -101,8 +103,8 @@ public final class DataFailCause {
public static final int PDN_CONN_DOES_NOT_EXIST = 0x36;
/** Multiple connections to a same PDN is not allowed. */
public static final int MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED = 0x37;
/** Packet Data Protocol (PDP) */
public static final int MAX_ACTIVE_PDP_CONTEXT_REACHED = 0x41;
/** Max number of Packet Data Protocol (PDP) context reached. */
public static final int ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED = 0x41;
/** Unsupported APN in current public land mobile network (PLMN). */
public static final int UNSUPPORTED_APN_IN_CURRENT_PLMN = 0x42;
/** Invalid transaction id. */
@@ -165,22 +167,36 @@ public final class DataFailCause {
// Local errors generated by Vendor RIL
// specified in ril.h
/** Data fail due to registration failure. */
public static final int REGISTRATION_FAIL = -1;
/** Data fail due to GPRS registration failure. */
public static final int GPRS_REGISTRATION_FAIL = -2;
/** Data call drop due to network/modem disconnect. */
public static final int SIGNAL_LOST = -3; /* no retry */
/**
* Preferred technology has changed, must retry with parameters appropriate for new technology.
*/
public static final int PREF_RADIO_TECH_CHANGED = -4;
/** data call was disconnected because radio was resetting, powered off. */
public static final int RADIO_POWER_OFF = -5; /* no retry */
/** Data call was disconnected by modem because tethered. */
public static final int TETHERED_CALL_ACTIVE = -6; /* no retry */
/** Data call fail due to unspecific errors. */
public static final int ERROR_UNSPECIFIED = 0xFFFF;
// Errors generated by the Framework
// specified here
/** Unknown data failure cause. */
public static final int UNKNOWN = 0x10000;
/** Data fail due to radio not unavailable. */
public static final int RADIO_NOT_AVAILABLE = 0x10001; /* no retry */
/** @hide */
public static final int UNACCEPTABLE_NETWORK_PARAMETER = 0x10002; /* no retry */
/** @hide */
public static final int CONNECTION_TO_DATACONNECTIONAC_BROKEN = 0x10003;
/** Data connection was lost. */
public static final int LOST_CONNECTION = 0x10004;
/** Data was reset by framework. */
/** @hide */
public static final int RESET_BY_FRAMEWORK = 0x10005;
/** @hide */
@@ -216,7 +232,7 @@ public final class DataFailCause {
ESM_INFO_NOT_RECEIVED,
PDN_CONN_DOES_NOT_EXIST,
MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED,
MAX_ACTIVE_PDP_CONTEXT_REACHED,
ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED,
UNSUPPORTED_APN_IN_CURRENT_PLMN,
INVALID_TRANSACTION_ID,
MESSAGE_INCORRECT_SEMANTIC,
@@ -308,8 +324,8 @@ public final class DataFailCause {
sFailCauseMap.put(PDN_CONN_DOES_NOT_EXIST, "PDN_CONN_DOES_NOT_EXIST");
sFailCauseMap.put(MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED,
"MULTI_CONN_TO_SAME_PDN_NOT_ALLOWED");
sFailCauseMap.put(MAX_ACTIVE_PDP_CONTEXT_REACHED,
"MAX_ACTIVE_PDP_CONTEXT_REACHED");
sFailCauseMap.put(ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED,
"ACTIVE_PDP_CONTEXT_MAX_NUMBER_REACHED");
sFailCauseMap.put(UNSUPPORTED_APN_IN_CURRENT_PLMN,
"UNSUPPORTED_APN_IN_CURRENT_PLMN");
sFailCauseMap.put(INVALID_TRANSACTION_ID, "INVALID_TRANSACTION_ID");
@@ -369,6 +385,9 @@ public final class DataFailCause {
sFailCauseMap.put(RESET_BY_FRAMEWORK, "RESET_BY_FRAMEWORK");
}
private DataFailCause() {
}
/**
* Map of subId -> set of data call setup permanent failure for the carrier.
*/
@@ -382,6 +401,8 @@ public final class DataFailCause {
* @param cause data disconnect cause
* @param subId subscription index
* @return true if the fail cause code needs platform to trigger a modem restart.
*
* @hide
*/
public static boolean isRadioRestartFailure(@NonNull Context context, @FailCause int cause,
int subId) {
@@ -410,6 +431,7 @@ public final class DataFailCause {
return false;
}
/** @hide */
public static boolean isPermanentFailure(@NonNull Context context, @FailCause int failCause,
int subId) {
synchronized (sPermanentFailureCache) {
@@ -469,6 +491,7 @@ public final class DataFailCause {
}
}
/** @hide */
public static boolean isEventLoggable(@FailCause int dataFailCause) {
return (dataFailCause == OPERATOR_BARRED) || (dataFailCause == INSUFFICIENT_RESOURCES)
|| (dataFailCause == UNKNOWN_PDP_ADDRESS_TYPE)
@@ -488,11 +511,13 @@ public final class DataFailCause {
|| (dataFailCause == UNACCEPTABLE_NETWORK_PARAMETER);
}
/** @hide */
public static String toString(@FailCause int dataFailCause) {
int cause = getFailCause(dataFailCause);
return (cause == UNKNOWN) ? "UNKNOWN(" + dataFailCause + ")" : sFailCauseMap.get(cause);
}
/** @hide */
public static int getFailCause(@FailCause int failCause) {
if (sFailCauseMap.containsKey(failCause)) {
return failCause;

View File

@@ -184,14 +184,17 @@ public class PhoneStateListener {
public static final int LISTEN_PRECISE_CALL_STATE = 0x00000800;
/**
* Listen for precise changes and fails on the data connection (cellular).
* Listen for {@link PreciseDataConnectionState} on the data connection (cellular).
*
* {@more}
* Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
* READ_PRECISE_PHONE_STATE}
*
* @see #onPreciseDataConnectionStateChanged
*
* @hide
*/
@SystemApi
public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 0x00001000;
/**
@@ -564,10 +567,11 @@ public class PhoneStateListener {
/**
* Callback invoked when data connection state changes with precise information.
* @param dataConnectionState {@link PreciseDataConnectionState}
*
* @hide
*/
@UnsupportedAppUsage
@SystemApi
public void onPreciseDataConnectionStateChanged(
PreciseDataConnectionState dataConnectionState) {
// default implementation empty

View File

@@ -16,10 +16,12 @@
package android.telephony;
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;
@@ -31,7 +33,7 @@ import java.util.Objects;
* <ul>
* <li>Data connection state.
* <li>Network type of the connection.
* <li>APN type.
* <li>APN types.
* <li>APN.
* <li>The properties of the network link.
* <li>Data connection fail cause.
@@ -39,14 +41,15 @@ import java.util.Objects;
*
* @hide
*/
public class PreciseDataConnectionState implements Parcelable {
@SystemApi
public final class PreciseDataConnectionState implements Parcelable {
private int mState = TelephonyManager.DATA_UNKNOWN;
private int mNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
private String mAPNType = "";
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;
private String mFailCause = "";
/**
* Constructor
@@ -54,11 +57,14 @@ public class PreciseDataConnectionState implements Parcelable {
* @hide
*/
@UnsupportedAppUsage
public PreciseDataConnectionState(int state, int networkType, String apnType, String apn,
LinkProperties linkProperties, String failCause) {
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;
mAPNType = apnType;
mAPNTypes = apnTypes;
mAPN = apn;
mLinkProperties = linkProperties;
mFailCause = failCause;
@@ -74,73 +80,52 @@ public class PreciseDataConnectionState implements Parcelable {
/**
* Construct a PreciseDataConnectionState object from the given parcel.
*
* @hide
*/
private PreciseDataConnectionState(Parcel in) {
mState = in.readInt();
mNetworkType = in.readInt();
mAPNType = in.readString();
mAPNTypes = in.readInt();
mAPN = in.readString();
mLinkProperties = (LinkProperties)in.readParcelable(null);
mFailCause = in.readString();
mFailCause = in.readInt();
}
/**
* Get data connection state
*
* @see TelephonyManager#DATA_UNKNOWN
* @see TelephonyManager#DATA_DISCONNECTED
* @see TelephonyManager#DATA_CONNECTING
* @see TelephonyManager#DATA_CONNECTED
* @see TelephonyManager#DATA_SUSPENDED
* Returns the state of data connection that supported the apn types returned by
* {@link #getDataConnectionApnTypeBitMask()}
*/
@UnsupportedAppUsage
public int getDataConnectionState() {
public @TelephonyManager.DataState int getDataConnectionState() {
return mState;
}
/**
* Get data connection network type
*
* @see TelephonyManager#NETWORK_TYPE_UNKNOWN
* @see TelephonyManager#NETWORK_TYPE_GPRS
* @see TelephonyManager#NETWORK_TYPE_EDGE
* @see TelephonyManager#NETWORK_TYPE_UMTS
* @see TelephonyManager#NETWORK_TYPE_CDMA
* @see TelephonyManager#NETWORK_TYPE_EVDO_0
* @see TelephonyManager#NETWORK_TYPE_EVDO_A
* @see TelephonyManager#NETWORK_TYPE_1xRTT
* @see TelephonyManager#NETWORK_TYPE_HSDPA
* @see TelephonyManager#NETWORK_TYPE_HSUPA
* @see TelephonyManager#NETWORK_TYPE_HSPA
* @see TelephonyManager#NETWORK_TYPE_IDEN
* @see TelephonyManager#NETWORK_TYPE_EVDO_B
* @see TelephonyManager#NETWORK_TYPE_LTE
* @see TelephonyManager#NETWORK_TYPE_EHRPD
* @see TelephonyManager#NETWORK_TYPE_HSPAP
* Returns the network type associated with this data connection.
* @hide
*/
@UnsupportedAppUsage
public int getDataConnectionNetworkType() {
public @TelephonyManager.NetworkType int getDataConnectionNetworkType() {
return mNetworkType;
}
/**
* Get data connection APN type
* Returns the data connection APN types supported by this connection and triggers
* {@link PreciseDataConnectionState} change.
*/
@UnsupportedAppUsage
public String getDataConnectionAPNType() {
return mAPNType;
public @ApnSetting.ApnType int getDataConnectionApnTypeBitMask() {
return mAPNTypes;
}
/**
* Get data connection APN.
* Returns APN {@link ApnSetting} of this data connection.
*/
@UnsupportedAppUsage
public String getDataConnectionAPN() {
public String getDataConnectionApn() {
return mAPN;
}
/**
* Get the properties of the network link.
* Get the properties of the network link {@link LinkProperties}.
* @hide
*/
@UnsupportedAppUsage
public LinkProperties getDataConnectionLinkProperties() {
@@ -148,10 +133,9 @@ public class PreciseDataConnectionState implements Parcelable {
}
/**
* Get data connection fail cause, in case there was a failure.
* Returns data connection fail cause, in case there was a failure.
*/
@UnsupportedAppUsage
public String getDataConnectionFailCause() {
public @DataFailCause.FailCause int getDataConnectionFailCause() {
return mFailCause;
}
@@ -164,10 +148,10 @@ public class PreciseDataConnectionState implements Parcelable {
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mState);
out.writeInt(mNetworkType);
out.writeString(mAPNType);
out.writeInt(mAPNTypes);
out.writeString(mAPN);
out.writeParcelable(mLinkProperties, flags);
out.writeString(mFailCause);
out.writeInt(mFailCause);
}
public static final Parcelable.Creator<PreciseDataConnectionState> CREATOR
@@ -184,56 +168,23 @@ public class PreciseDataConnectionState implements Parcelable {
@Override
public int hashCode() {
return Objects.hash(mState, mNetworkType, mAPNType, mAPN, mLinkProperties, mFailCause);
return Objects.hash(mState, mNetworkType, mAPNTypes, mAPN, mLinkProperties,
mFailCause);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
if (!(obj instanceof PreciseDataConnectionState)) {
return false;
}
PreciseDataConnectionState other = (PreciseDataConnectionState) obj;
if (mAPN == null) {
if (other.mAPN != null) {
return false;
}
} else if (!mAPN.equals(other.mAPN)) {
return false;
}
if (mAPNType == null) {
if (other.mAPNType != null) {
return false;
}
} else if (!mAPNType.equals(other.mAPNType)) {
return false;
}
if (mFailCause == null) {
if (other.mFailCause != null) {
return false;
}
} else if (!mFailCause.equals(other.mFailCause)) {
return false;
}
if (mLinkProperties == null) {
if (other.mLinkProperties != null) {
return false;
}
} else if (!mLinkProperties.equals(other.mLinkProperties)) {
return false;
}
if (mNetworkType != other.mNetworkType) {
return false;
}
if (mState != other.mState) {
return false;
}
return true;
return Objects.equals(mAPN, other.mAPN) && mAPNTypes == other.mAPNTypes
&& mFailCause == other.mFailCause
&& Objects.equals(mLinkProperties, other.mLinkProperties)
&& mNetworkType == other.mNetworkType
&& mState == other.mState;
}
@Override
@@ -242,10 +193,10 @@ public class PreciseDataConnectionState implements Parcelable {
sb.append("Data Connection state: " + mState);
sb.append(", Network type: " + mNetworkType);
sb.append(", APN type: " + mAPNType);
sb.append(", APN types: " + ApnSetting.getApnTypesStringFromBitmask(mAPNTypes));
sb.append(", APN: " + mAPN);
sb.append(", Link properties: " + mLinkProperties);
sb.append(", Fail cause: " + mFailCause);
sb.append(", Fail cause: " + DataFailCause.toString(mFailCause));
return sb.toString();
}

View File

@@ -4558,9 +4558,18 @@ public class TelephonyManager {
}
}
/** Data connection state: Unknown. Used before we know the state.
* @hide
*/
/** @hide */
@IntDef(prefix = {"DATA_"}, value = {
DATA_UNKNOWN,
DATA_DISCONNECTED,
DATA_CONNECTING,
DATA_CONNECTED,
DATA_SUSPENDED,
})
@Retention(RetentionPolicy.SOURCE)
public @interface DataState{}
/** Data connection state: Unknown. Used before we know the state. */
public static final int DATA_UNKNOWN = -1;
/** Data connection state: Disconnected. IP traffic not available. */
public static final int DATA_DISCONNECTED = 0;

View File

@@ -68,7 +68,7 @@ interface ITelephonyRegistry {
int backgroundCallState);
void notifyDisconnectCause(int disconnectCause, int preciseDisconnectCause);
void notifyPreciseDataConnectionFailed(String apnType, String apn,
String failCause);
int failCause);
void notifyCellInfoForSubscriber(in int subId, in List<CellInfo> cellInfo);
void notifySrvccStateChanged(in int subId, in int lteState);
void notifySimActivationStateChangedForPhoneId(in int phoneId, in int subId,