Merge "precisedataState refactor part 3"
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user