Loading core/api/system-current.txt +3 −1 Original line number Diff line number Diff line Loading @@ -9453,7 +9453,9 @@ package android.provider { field public static final int MATCH_ALL_APN_SET_ID = -1; // 0xffffffff field public static final String MAX_CONNECTIONS = "max_conns"; field public static final String MODEM_PERSIST = "modem_cognitive"; field public static final String MTU = "mtu"; field @Deprecated public static final String MTU = "mtu"; field public static final String MTU_V4 = "mtu_v4"; field public static final String MTU_V6 = "mtu_v6"; field public static final int NO_APN_SET_ID = 0; // 0x0 field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time"; field public static final int UNEDITED = 0; // 0x0 core/java/android/provider/Telephony.java +39 −0 Original line number Diff line number Diff line Loading @@ -3757,6 +3757,25 @@ public final class Telephony { */ public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask"; /** * Lingering radio technology (network type) bitmask. * To check what values can be contained, refer to the NETWORK_TYPE_ constants in * {@link android.telephony.TelephonyManager}. * Bitmask for a radio tech R is (1 << (R - 1)) * <P>Type: INTEGER (long)</P> * @hide */ public static final String LINGERING_NETWORK_TYPE_BITMASK = "lingering_network_type_bitmask"; /** * Sets whether the PDU session brought up by this APN should always be on. * See 3GPP TS 23.501 section 5.6.13 * <P>Type: INTEGER</P> * @hide */ public static final String ALWAYS_ON = "always_on"; /** * MVNO type: * {@code SPN (Service Provider Name), IMSI, GID (Group Identifier Level 1)}. Loading Loading @@ -3835,10 +3854,30 @@ public final class Telephony { * connected, in bytes. * <p>Type: INTEGER </p> * @hide * @deprecated use {@link #MTU_V4} or {@link #MTU_V6} instead */ @SystemApi @Deprecated public static final String MTU = "mtu"; /** * The MTU (maximum transmit unit) size of the mobile interface for IPv4 to which the APN is * connected, in bytes. * <p>Type: INTEGER </p> * @hide */ @SystemApi public static final String MTU_V4 = "mtu_v4"; /** * The MTU (maximum transmit unit) size of the mobile interface for IPv6 to which the APN is * connected, in bytes. * <p>Type: INTEGER </p> * @hide */ @SystemApi public static final String MTU_V6 = "mtu_v6"; /** * APN edit status. APN could be added/edited/deleted by a user or carrier. * see all possible returned APN edit status. Loading telephony/java/android/telephony/data/ApnSetting.java +120 −21 Original line number Diff line number Diff line Loading @@ -328,8 +328,6 @@ public class ApnSetting implements Parcelable { @SystemApi public static final String TYPE_XCAP_STRING = "xcap"; /** * APN type for Virtual SIM service. * Loading Loading @@ -506,27 +504,21 @@ public class ApnSetting implements Parcelable { private final int mRoamingProtocol; private final int mMtuV4; private final int mMtuV6; private final boolean mCarrierEnabled; private final int mNetworkTypeBitmask; private final @TelephonyManager.NetworkTypeBitMask int mNetworkTypeBitmask; private final @TelephonyManager.NetworkTypeBitMask long mLingeringNetworkTypeBitmask; private final int mProfileId; private final boolean mPersistent; private final int mMaxConns; private final int mWaitTime; private final int mMaxConnsTime; private final int mMvnoType; private final String mMvnoMatchData; private final int mApnSetId; private boolean mPermanentFailed = false; private final int mCarrierId; private final int mSkip464Xlat; private final boolean mAlwaysOn; /** * Returns the MTU size of the IPv4 mobile interface to which the APN connected. Note this value Loading Loading @@ -850,12 +842,29 @@ public class ApnSetting implements Parcelable { * Examples of Network Types include {@link TelephonyManager#NETWORK_TYPE_UNKNOWN}, * {@link TelephonyManager#NETWORK_TYPE_GPRS}, {@link TelephonyManager#NETWORK_TYPE_EDGE}. * * @return a bitmask describing the Radio Technologies(Network Types) * @return a bitmask describing the Radio Technologies (Network Types) or 0 if it is undefined. */ public int getNetworkTypeBitmask() { return mNetworkTypeBitmask; } /** * Returns a bitmask describing the Radio Technologies (Network Types) that should not be torn * down if it exists or brought up if it already exists for this APN. * * NetworkType bitmask is calculated from NETWORK_TYPE defined in {@link TelephonyManager}. * * Examples of Network Types include {@link TelephonyManager#NETWORK_TYPE_UNKNOWN}, * {@link TelephonyManager#NETWORK_TYPE_GPRS}, {@link TelephonyManager#NETWORK_TYPE_EDGE}. * * @return a bitmask describing the Radio Technologies (Network Types) that should linger * or 0 if it is undefined. * @hide */ public @TelephonyManager.NetworkTypeBitMask long getLingeringNetworkTypeBitmask() { return mLingeringNetworkTypeBitmask; } /** * Returns the MVNO match type for this APN. * Loading Loading @@ -888,6 +897,18 @@ public class ApnSetting implements Parcelable { return mSkip464Xlat; } /** * Returns whether User Plane resources have to be activated during every transition from * CM-IDLE mode to CM-CONNECTED state for this APN * See 3GPP TS 23.501 section 5.6.13 * * @return True if the PDU session for this APN should always be on and false otherwise * @hide */ public boolean isAlwaysOn() { return mAlwaysOn; } private ApnSetting(Builder builder) { this.mEntryName = builder.mEntryName; this.mApnName = builder.mApnName; Loading @@ -912,6 +933,7 @@ public class ApnSetting implements Parcelable { this.mMtuV6 = builder.mMtuV6; this.mCarrierEnabled = builder.mCarrierEnabled; this.mNetworkTypeBitmask = builder.mNetworkTypeBitmask; this.mLingeringNetworkTypeBitmask = builder.mLingeringNetworkTypeBitmask; this.mProfileId = builder.mProfileId; this.mPersistent = builder.mModemCognitive; this.mMaxConns = builder.mMaxConns; Loading @@ -922,6 +944,7 @@ public class ApnSetting implements Parcelable { this.mApnSetId = builder.mApnSetId; this.mCarrierId = builder.mCarrierId; this.mSkip464Xlat = builder.mSkip464Xlat; this.mAlwaysOn = builder.mAlwaysOn; } /** Loading @@ -938,6 +961,10 @@ public class ApnSetting implements Parcelable { networkTypeBitmask = ServiceState.convertBearerBitmaskToNetworkTypeBitmask(bearerBitmask); } int mtuV4 = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU_V4)); if (mtuV4 == -1) { mtuV4 = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU)); } return new Builder() .setId(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID))) Loading Loading @@ -972,6 +999,8 @@ public class ApnSetting implements Parcelable { .setCarrierEnabled(cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.CARRIER_ENABLED)) == 1) .setNetworkTypeBitmask(networkTypeBitmask) .setLingeringNetworkTypeBitmask(cursor.getInt(cursor.getColumnIndexOrThrow( Carriers.LINGERING_NETWORK_TYPE_BITMASK))) .setProfileId(cursor.getInt( cursor.getColumnIndexOrThrow(Telephony.Carriers.PROFILE_ID))) .setModemCognitive(cursor.getInt(cursor.getColumnIndexOrThrow( Loading @@ -982,8 +1011,8 @@ public class ApnSetting implements Parcelable { cursor.getColumnIndexOrThrow(Telephony.Carriers.WAIT_TIME_RETRY))) .setMaxConnsTime(cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.TIME_LIMIT_FOR_MAX_CONNECTIONS))) .setMtuV4(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU))) .setMtuV6(UNSET_MTU) // TODO: Add corresponding support in telephony provider .setMtuV4(mtuV4) .setMtuV6(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU_V6))) .setMvnoType(getMvnoTypeIntFromString( cursor.getString(cursor.getColumnIndexOrThrow( Telephony.Carriers.MVNO_TYPE)))) Loading @@ -994,6 +1023,7 @@ public class ApnSetting implements Parcelable { .setCarrierId(cursor.getInt( cursor.getColumnIndexOrThrow(Telephony.Carriers.CARRIER_ID))) .setSkip464Xlat(cursor.getInt(cursor.getColumnIndexOrThrow(Carriers.SKIP_464XLAT))) .setAlwaysOn(cursor.getInt(cursor.getColumnIndexOrThrow(Carriers.ALWAYS_ON)) == 1) .buildWithoutCheck(); } Loading @@ -1019,6 +1049,7 @@ public class ApnSetting implements Parcelable { .setRoamingProtocol(apn.mRoamingProtocol) .setCarrierEnabled(apn.mCarrierEnabled) .setNetworkTypeBitmask(apn.mNetworkTypeBitmask) .setLingeringNetworkTypeBitmask(apn.mLingeringNetworkTypeBitmask) .setProfileId(apn.mProfileId) .setModemCognitive(apn.mPersistent) .setMaxConns(apn.mMaxConns) Loading @@ -1031,6 +1062,7 @@ public class ApnSetting implements Parcelable { .setApnSetId(apn.mApnSetId) .setCarrierId(apn.mCarrierId) .setSkip464Xlat(apn.mSkip464Xlat) .setAlwaysOn(apn.mAlwaysOn) .buildWithoutCheck(); } Loading Loading @@ -1069,9 +1101,11 @@ public class ApnSetting implements Parcelable { sb.append(", ").append(mMvnoMatchData); sb.append(", ").append(mPermanentFailed); sb.append(", ").append(mNetworkTypeBitmask); sb.append(", ").append(mLingeringNetworkTypeBitmask); sb.append(", ").append(mApnSetId); sb.append(", ").append(mCarrierId); sb.append(", ").append(mSkip464Xlat); sb.append(", ").append(mAlwaysOn); return sb.toString(); } Loading Loading @@ -1136,8 +1170,9 @@ public class ApnSetting implements Parcelable { return Objects.hash(mApnName, mProxyAddress, mProxyPort, mMmsc, mMmsProxyAddress, mMmsProxyPort, mUser, mPassword, mAuthType, mApnTypeBitmask, mId, mOperatorNumeric, mProtocol, mRoamingProtocol, mMtuV4, mMtuV6, mCarrierEnabled, mNetworkTypeBitmask, mProfileId, mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType, mMvnoMatchData, mApnSetId, mCarrierId, mSkip464Xlat); mLingeringNetworkTypeBitmask, mProfileId, mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType, mMvnoMatchData, mApnSetId, mCarrierId, mSkip464Xlat, mAlwaysOn); } @Override Loading Loading @@ -1174,9 +1209,11 @@ public class ApnSetting implements Parcelable { && Objects.equals(mMvnoType, other.mMvnoType) && Objects.equals(mMvnoMatchData, other.mMvnoMatchData) && Objects.equals(mNetworkTypeBitmask, other.mNetworkTypeBitmask) && Objects.equals(mLingeringNetworkTypeBitmask, other.mLingeringNetworkTypeBitmask) && Objects.equals(mApnSetId, other.mApnSetId) && Objects.equals(mCarrierId, other.mCarrierId) && Objects.equals(mSkip464Xlat, other.mSkip464Xlat); && Objects.equals(mSkip464Xlat, other.mSkip464Xlat) && Objects.equals(mAlwaysOn, other.mAlwaysOn); } /** Loading Loading @@ -1210,6 +1247,7 @@ public class ApnSetting implements Parcelable { && Objects.equals(mPassword, other.mPassword) && Objects.equals(mAuthType, other.mAuthType) && Objects.equals(mApnTypeBitmask, other.mApnTypeBitmask) && Objects.equals(mLingeringNetworkTypeBitmask, other.mLingeringNetworkTypeBitmask) && (isDataRoaming || Objects.equals(mProtocol, other.mProtocol)) && (!isDataRoaming || Objects.equals(mRoamingProtocol, other.mRoamingProtocol)) && Objects.equals(mCarrierEnabled, other.mCarrierEnabled) Loading @@ -1224,7 +1262,8 @@ public class ApnSetting implements Parcelable { && Objects.equals(mMvnoMatchData, other.mMvnoMatchData) && Objects.equals(mApnSetId, other.mApnSetId) && Objects.equals(mCarrierId, other.mCarrierId) && Objects.equals(mSkip464Xlat, other.mSkip464Xlat); && Objects.equals(mSkip464Xlat, other.mSkip464Xlat) && Objects.equals(mAlwaysOn, other.mAlwaysOn); } /** Loading Loading @@ -1304,9 +1343,13 @@ public class ApnSetting implements Parcelable { apnValue.put(Telephony.Carriers.CARRIER_ENABLED, mCarrierEnabled); apnValue.put(Telephony.Carriers.MVNO_TYPE, getMvnoTypeStringFromInt(mMvnoType)); apnValue.put(Telephony.Carriers.NETWORK_TYPE_BITMASK, mNetworkTypeBitmask); apnValue.put(Telephony.Carriers.LINGERING_NETWORK_TYPE_BITMASK, mLingeringNetworkTypeBitmask); apnValue.put(Telephony.Carriers.MTU_V4, mMtuV4); apnValue.put(Telephony.Carriers.MTU_V6, mMtuV6); apnValue.put(Telephony.Carriers.CARRIER_ID, mCarrierId); apnValue.put(Telephony.Carriers.SKIP_464XLAT, mSkip464Xlat); apnValue.put(Telephony.Carriers.ALWAYS_ON, mAlwaysOn); return apnValue; } Loading Loading @@ -1510,6 +1553,31 @@ public class ApnSetting implements Parcelable { return ServiceState.bitmaskHasTech(mNetworkTypeBitmask, networkType); } /** * Check if this APN setting can support the given lingering network * * @param networkType The lingering network type * @return {@code true} if this APN setting can support the given lingering network. * * @hide */ public boolean canSupportLingeringNetworkType(@NetworkType int networkType) { if (networkType == 0) { return canSupportNetworkType(networkType); } // Do a special checking for GSM. In reality, GSM is a voice only network type and can never // be used for data. We allow it here because in some DSDS corner cases, on the non-DDS // sub, modem reports data rat unknown. In that case if voice is GSM and this APN supports // GPRS or EDGE, this APN setting should be selected. if (networkType == TelephonyManager.NETWORK_TYPE_GSM && (mLingeringNetworkTypeBitmask & (TelephonyManager.NETWORK_TYPE_BITMASK_GPRS | TelephonyManager.NETWORK_TYPE_BITMASK_EDGE)) != 0) { return true; } return ServiceState.bitmaskHasTech((int) mLingeringNetworkTypeBitmask, networkType); } // Implement Parcelable. @Override /** @hide */ Loading Loading @@ -1537,6 +1605,7 @@ public class ApnSetting implements Parcelable { dest.writeInt(mRoamingProtocol); dest.writeBoolean(mCarrierEnabled); dest.writeInt(mNetworkTypeBitmask); dest.writeLong(mLingeringNetworkTypeBitmask); dest.writeInt(mProfileId); dest.writeBoolean(mPersistent); dest.writeInt(mMaxConns); Loading @@ -1549,6 +1618,7 @@ public class ApnSetting implements Parcelable { dest.writeInt(mApnSetId); dest.writeInt(mCarrierId); dest.writeInt(mSkip464Xlat); dest.writeBoolean(mAlwaysOn); } private static ApnSetting readFromParcel(Parcel in) { Loading @@ -1570,6 +1640,7 @@ public class ApnSetting implements Parcelable { .setRoamingProtocol(in.readInt()) .setCarrierEnabled(in.readBoolean()) .setNetworkTypeBitmask(in.readInt()) .setLingeringNetworkTypeBitmask(in.readLong()) .setProfileId(in.readInt()) .setModemCognitive(in.readBoolean()) .setMaxConns(in.readInt()) Loading @@ -1582,6 +1653,7 @@ public class ApnSetting implements Parcelable { .setApnSetId(in.readInt()) .setCarrierId(in.readInt()) .setSkip464Xlat(in.readInt()) .setAlwaysOn(in.readBoolean()) .buildWithoutCheck(); } Loading Loading @@ -1649,7 +1721,8 @@ public class ApnSetting implements Parcelable { private int mRoamingProtocol = UNSPECIFIED_INT; private int mMtuV4; private int mMtuV6; private int mNetworkTypeBitmask; private @TelephonyManager.NetworkTypeBitMask int mNetworkTypeBitmask; private @TelephonyManager.NetworkTypeBitMask long mLingeringNetworkTypeBitmask; private boolean mCarrierEnabled; private int mProfileId; private boolean mModemCognitive; Loading @@ -1661,6 +1734,7 @@ public class ApnSetting implements Parcelable { private int mApnSetId; private int mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID; private int mSkip464Xlat = Carriers.SKIP_464XLAT_DEFAULT; private boolean mAlwaysOn; /** * Default constructor for Builder. Loading Loading @@ -2011,6 +2085,19 @@ public class ApnSetting implements Parcelable { return this; } /** * Sets lingering Radio Technology (Network Type) for this APN. * * @param lingeringNetworkTypeBitmask the Radio Technology (Network Type) that should linger * @hide */ @NonNull public Builder setLingeringNetworkTypeBitmask(@TelephonyManager.NetworkTypeBitMask long lingeringNetworkTypeBitmask) { this.mLingeringNetworkTypeBitmask = lingeringNetworkTypeBitmask; return this; } /** * Sets the MVNO match type for this APN. * Loading Loading @@ -2047,6 +2134,18 @@ public class ApnSetting implements Parcelable { return this; } /** * Sets whether the PDU session brought up by this APN should always be on. * See 3GPP TS 23.501 section 5.6.13 * * @param alwaysOn the always on status to set for this APN * @hide */ public Builder setAlwaysOn(boolean alwaysOn) { this.mAlwaysOn = alwaysOn; return this; } /** * Builds {@link ApnSetting} from this builder. * Loading Loading
core/api/system-current.txt +3 −1 Original line number Diff line number Diff line Loading @@ -9453,7 +9453,9 @@ package android.provider { field public static final int MATCH_ALL_APN_SET_ID = -1; // 0xffffffff field public static final String MAX_CONNECTIONS = "max_conns"; field public static final String MODEM_PERSIST = "modem_cognitive"; field public static final String MTU = "mtu"; field @Deprecated public static final String MTU = "mtu"; field public static final String MTU_V4 = "mtu_v4"; field public static final String MTU_V6 = "mtu_v6"; field public static final int NO_APN_SET_ID = 0; // 0x0 field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time"; field public static final int UNEDITED = 0; // 0x0
core/java/android/provider/Telephony.java +39 −0 Original line number Diff line number Diff line Loading @@ -3757,6 +3757,25 @@ public final class Telephony { */ public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask"; /** * Lingering radio technology (network type) bitmask. * To check what values can be contained, refer to the NETWORK_TYPE_ constants in * {@link android.telephony.TelephonyManager}. * Bitmask for a radio tech R is (1 << (R - 1)) * <P>Type: INTEGER (long)</P> * @hide */ public static final String LINGERING_NETWORK_TYPE_BITMASK = "lingering_network_type_bitmask"; /** * Sets whether the PDU session brought up by this APN should always be on. * See 3GPP TS 23.501 section 5.6.13 * <P>Type: INTEGER</P> * @hide */ public static final String ALWAYS_ON = "always_on"; /** * MVNO type: * {@code SPN (Service Provider Name), IMSI, GID (Group Identifier Level 1)}. Loading Loading @@ -3835,10 +3854,30 @@ public final class Telephony { * connected, in bytes. * <p>Type: INTEGER </p> * @hide * @deprecated use {@link #MTU_V4} or {@link #MTU_V6} instead */ @SystemApi @Deprecated public static final String MTU = "mtu"; /** * The MTU (maximum transmit unit) size of the mobile interface for IPv4 to which the APN is * connected, in bytes. * <p>Type: INTEGER </p> * @hide */ @SystemApi public static final String MTU_V4 = "mtu_v4"; /** * The MTU (maximum transmit unit) size of the mobile interface for IPv6 to which the APN is * connected, in bytes. * <p>Type: INTEGER </p> * @hide */ @SystemApi public static final String MTU_V6 = "mtu_v6"; /** * APN edit status. APN could be added/edited/deleted by a user or carrier. * see all possible returned APN edit status. Loading
telephony/java/android/telephony/data/ApnSetting.java +120 −21 Original line number Diff line number Diff line Loading @@ -328,8 +328,6 @@ public class ApnSetting implements Parcelable { @SystemApi public static final String TYPE_XCAP_STRING = "xcap"; /** * APN type for Virtual SIM service. * Loading Loading @@ -506,27 +504,21 @@ public class ApnSetting implements Parcelable { private final int mRoamingProtocol; private final int mMtuV4; private final int mMtuV6; private final boolean mCarrierEnabled; private final int mNetworkTypeBitmask; private final @TelephonyManager.NetworkTypeBitMask int mNetworkTypeBitmask; private final @TelephonyManager.NetworkTypeBitMask long mLingeringNetworkTypeBitmask; private final int mProfileId; private final boolean mPersistent; private final int mMaxConns; private final int mWaitTime; private final int mMaxConnsTime; private final int mMvnoType; private final String mMvnoMatchData; private final int mApnSetId; private boolean mPermanentFailed = false; private final int mCarrierId; private final int mSkip464Xlat; private final boolean mAlwaysOn; /** * Returns the MTU size of the IPv4 mobile interface to which the APN connected. Note this value Loading Loading @@ -850,12 +842,29 @@ public class ApnSetting implements Parcelable { * Examples of Network Types include {@link TelephonyManager#NETWORK_TYPE_UNKNOWN}, * {@link TelephonyManager#NETWORK_TYPE_GPRS}, {@link TelephonyManager#NETWORK_TYPE_EDGE}. * * @return a bitmask describing the Radio Technologies(Network Types) * @return a bitmask describing the Radio Technologies (Network Types) or 0 if it is undefined. */ public int getNetworkTypeBitmask() { return mNetworkTypeBitmask; } /** * Returns a bitmask describing the Radio Technologies (Network Types) that should not be torn * down if it exists or brought up if it already exists for this APN. * * NetworkType bitmask is calculated from NETWORK_TYPE defined in {@link TelephonyManager}. * * Examples of Network Types include {@link TelephonyManager#NETWORK_TYPE_UNKNOWN}, * {@link TelephonyManager#NETWORK_TYPE_GPRS}, {@link TelephonyManager#NETWORK_TYPE_EDGE}. * * @return a bitmask describing the Radio Technologies (Network Types) that should linger * or 0 if it is undefined. * @hide */ public @TelephonyManager.NetworkTypeBitMask long getLingeringNetworkTypeBitmask() { return mLingeringNetworkTypeBitmask; } /** * Returns the MVNO match type for this APN. * Loading Loading @@ -888,6 +897,18 @@ public class ApnSetting implements Parcelable { return mSkip464Xlat; } /** * Returns whether User Plane resources have to be activated during every transition from * CM-IDLE mode to CM-CONNECTED state for this APN * See 3GPP TS 23.501 section 5.6.13 * * @return True if the PDU session for this APN should always be on and false otherwise * @hide */ public boolean isAlwaysOn() { return mAlwaysOn; } private ApnSetting(Builder builder) { this.mEntryName = builder.mEntryName; this.mApnName = builder.mApnName; Loading @@ -912,6 +933,7 @@ public class ApnSetting implements Parcelable { this.mMtuV6 = builder.mMtuV6; this.mCarrierEnabled = builder.mCarrierEnabled; this.mNetworkTypeBitmask = builder.mNetworkTypeBitmask; this.mLingeringNetworkTypeBitmask = builder.mLingeringNetworkTypeBitmask; this.mProfileId = builder.mProfileId; this.mPersistent = builder.mModemCognitive; this.mMaxConns = builder.mMaxConns; Loading @@ -922,6 +944,7 @@ public class ApnSetting implements Parcelable { this.mApnSetId = builder.mApnSetId; this.mCarrierId = builder.mCarrierId; this.mSkip464Xlat = builder.mSkip464Xlat; this.mAlwaysOn = builder.mAlwaysOn; } /** Loading @@ -938,6 +961,10 @@ public class ApnSetting implements Parcelable { networkTypeBitmask = ServiceState.convertBearerBitmaskToNetworkTypeBitmask(bearerBitmask); } int mtuV4 = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU_V4)); if (mtuV4 == -1) { mtuV4 = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU)); } return new Builder() .setId(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID))) Loading Loading @@ -972,6 +999,8 @@ public class ApnSetting implements Parcelable { .setCarrierEnabled(cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.CARRIER_ENABLED)) == 1) .setNetworkTypeBitmask(networkTypeBitmask) .setLingeringNetworkTypeBitmask(cursor.getInt(cursor.getColumnIndexOrThrow( Carriers.LINGERING_NETWORK_TYPE_BITMASK))) .setProfileId(cursor.getInt( cursor.getColumnIndexOrThrow(Telephony.Carriers.PROFILE_ID))) .setModemCognitive(cursor.getInt(cursor.getColumnIndexOrThrow( Loading @@ -982,8 +1011,8 @@ public class ApnSetting implements Parcelable { cursor.getColumnIndexOrThrow(Telephony.Carriers.WAIT_TIME_RETRY))) .setMaxConnsTime(cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.TIME_LIMIT_FOR_MAX_CONNECTIONS))) .setMtuV4(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU))) .setMtuV6(UNSET_MTU) // TODO: Add corresponding support in telephony provider .setMtuV4(mtuV4) .setMtuV6(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU_V6))) .setMvnoType(getMvnoTypeIntFromString( cursor.getString(cursor.getColumnIndexOrThrow( Telephony.Carriers.MVNO_TYPE)))) Loading @@ -994,6 +1023,7 @@ public class ApnSetting implements Parcelable { .setCarrierId(cursor.getInt( cursor.getColumnIndexOrThrow(Telephony.Carriers.CARRIER_ID))) .setSkip464Xlat(cursor.getInt(cursor.getColumnIndexOrThrow(Carriers.SKIP_464XLAT))) .setAlwaysOn(cursor.getInt(cursor.getColumnIndexOrThrow(Carriers.ALWAYS_ON)) == 1) .buildWithoutCheck(); } Loading @@ -1019,6 +1049,7 @@ public class ApnSetting implements Parcelable { .setRoamingProtocol(apn.mRoamingProtocol) .setCarrierEnabled(apn.mCarrierEnabled) .setNetworkTypeBitmask(apn.mNetworkTypeBitmask) .setLingeringNetworkTypeBitmask(apn.mLingeringNetworkTypeBitmask) .setProfileId(apn.mProfileId) .setModemCognitive(apn.mPersistent) .setMaxConns(apn.mMaxConns) Loading @@ -1031,6 +1062,7 @@ public class ApnSetting implements Parcelable { .setApnSetId(apn.mApnSetId) .setCarrierId(apn.mCarrierId) .setSkip464Xlat(apn.mSkip464Xlat) .setAlwaysOn(apn.mAlwaysOn) .buildWithoutCheck(); } Loading Loading @@ -1069,9 +1101,11 @@ public class ApnSetting implements Parcelable { sb.append(", ").append(mMvnoMatchData); sb.append(", ").append(mPermanentFailed); sb.append(", ").append(mNetworkTypeBitmask); sb.append(", ").append(mLingeringNetworkTypeBitmask); sb.append(", ").append(mApnSetId); sb.append(", ").append(mCarrierId); sb.append(", ").append(mSkip464Xlat); sb.append(", ").append(mAlwaysOn); return sb.toString(); } Loading Loading @@ -1136,8 +1170,9 @@ public class ApnSetting implements Parcelable { return Objects.hash(mApnName, mProxyAddress, mProxyPort, mMmsc, mMmsProxyAddress, mMmsProxyPort, mUser, mPassword, mAuthType, mApnTypeBitmask, mId, mOperatorNumeric, mProtocol, mRoamingProtocol, mMtuV4, mMtuV6, mCarrierEnabled, mNetworkTypeBitmask, mProfileId, mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType, mMvnoMatchData, mApnSetId, mCarrierId, mSkip464Xlat); mLingeringNetworkTypeBitmask, mProfileId, mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType, mMvnoMatchData, mApnSetId, mCarrierId, mSkip464Xlat, mAlwaysOn); } @Override Loading Loading @@ -1174,9 +1209,11 @@ public class ApnSetting implements Parcelable { && Objects.equals(mMvnoType, other.mMvnoType) && Objects.equals(mMvnoMatchData, other.mMvnoMatchData) && Objects.equals(mNetworkTypeBitmask, other.mNetworkTypeBitmask) && Objects.equals(mLingeringNetworkTypeBitmask, other.mLingeringNetworkTypeBitmask) && Objects.equals(mApnSetId, other.mApnSetId) && Objects.equals(mCarrierId, other.mCarrierId) && Objects.equals(mSkip464Xlat, other.mSkip464Xlat); && Objects.equals(mSkip464Xlat, other.mSkip464Xlat) && Objects.equals(mAlwaysOn, other.mAlwaysOn); } /** Loading Loading @@ -1210,6 +1247,7 @@ public class ApnSetting implements Parcelable { && Objects.equals(mPassword, other.mPassword) && Objects.equals(mAuthType, other.mAuthType) && Objects.equals(mApnTypeBitmask, other.mApnTypeBitmask) && Objects.equals(mLingeringNetworkTypeBitmask, other.mLingeringNetworkTypeBitmask) && (isDataRoaming || Objects.equals(mProtocol, other.mProtocol)) && (!isDataRoaming || Objects.equals(mRoamingProtocol, other.mRoamingProtocol)) && Objects.equals(mCarrierEnabled, other.mCarrierEnabled) Loading @@ -1224,7 +1262,8 @@ public class ApnSetting implements Parcelable { && Objects.equals(mMvnoMatchData, other.mMvnoMatchData) && Objects.equals(mApnSetId, other.mApnSetId) && Objects.equals(mCarrierId, other.mCarrierId) && Objects.equals(mSkip464Xlat, other.mSkip464Xlat); && Objects.equals(mSkip464Xlat, other.mSkip464Xlat) && Objects.equals(mAlwaysOn, other.mAlwaysOn); } /** Loading Loading @@ -1304,9 +1343,13 @@ public class ApnSetting implements Parcelable { apnValue.put(Telephony.Carriers.CARRIER_ENABLED, mCarrierEnabled); apnValue.put(Telephony.Carriers.MVNO_TYPE, getMvnoTypeStringFromInt(mMvnoType)); apnValue.put(Telephony.Carriers.NETWORK_TYPE_BITMASK, mNetworkTypeBitmask); apnValue.put(Telephony.Carriers.LINGERING_NETWORK_TYPE_BITMASK, mLingeringNetworkTypeBitmask); apnValue.put(Telephony.Carriers.MTU_V4, mMtuV4); apnValue.put(Telephony.Carriers.MTU_V6, mMtuV6); apnValue.put(Telephony.Carriers.CARRIER_ID, mCarrierId); apnValue.put(Telephony.Carriers.SKIP_464XLAT, mSkip464Xlat); apnValue.put(Telephony.Carriers.ALWAYS_ON, mAlwaysOn); return apnValue; } Loading Loading @@ -1510,6 +1553,31 @@ public class ApnSetting implements Parcelable { return ServiceState.bitmaskHasTech(mNetworkTypeBitmask, networkType); } /** * Check if this APN setting can support the given lingering network * * @param networkType The lingering network type * @return {@code true} if this APN setting can support the given lingering network. * * @hide */ public boolean canSupportLingeringNetworkType(@NetworkType int networkType) { if (networkType == 0) { return canSupportNetworkType(networkType); } // Do a special checking for GSM. In reality, GSM is a voice only network type and can never // be used for data. We allow it here because in some DSDS corner cases, on the non-DDS // sub, modem reports data rat unknown. In that case if voice is GSM and this APN supports // GPRS or EDGE, this APN setting should be selected. if (networkType == TelephonyManager.NETWORK_TYPE_GSM && (mLingeringNetworkTypeBitmask & (TelephonyManager.NETWORK_TYPE_BITMASK_GPRS | TelephonyManager.NETWORK_TYPE_BITMASK_EDGE)) != 0) { return true; } return ServiceState.bitmaskHasTech((int) mLingeringNetworkTypeBitmask, networkType); } // Implement Parcelable. @Override /** @hide */ Loading Loading @@ -1537,6 +1605,7 @@ public class ApnSetting implements Parcelable { dest.writeInt(mRoamingProtocol); dest.writeBoolean(mCarrierEnabled); dest.writeInt(mNetworkTypeBitmask); dest.writeLong(mLingeringNetworkTypeBitmask); dest.writeInt(mProfileId); dest.writeBoolean(mPersistent); dest.writeInt(mMaxConns); Loading @@ -1549,6 +1618,7 @@ public class ApnSetting implements Parcelable { dest.writeInt(mApnSetId); dest.writeInt(mCarrierId); dest.writeInt(mSkip464Xlat); dest.writeBoolean(mAlwaysOn); } private static ApnSetting readFromParcel(Parcel in) { Loading @@ -1570,6 +1640,7 @@ public class ApnSetting implements Parcelable { .setRoamingProtocol(in.readInt()) .setCarrierEnabled(in.readBoolean()) .setNetworkTypeBitmask(in.readInt()) .setLingeringNetworkTypeBitmask(in.readLong()) .setProfileId(in.readInt()) .setModemCognitive(in.readBoolean()) .setMaxConns(in.readInt()) Loading @@ -1582,6 +1653,7 @@ public class ApnSetting implements Parcelable { .setApnSetId(in.readInt()) .setCarrierId(in.readInt()) .setSkip464Xlat(in.readInt()) .setAlwaysOn(in.readBoolean()) .buildWithoutCheck(); } Loading Loading @@ -1649,7 +1721,8 @@ public class ApnSetting implements Parcelable { private int mRoamingProtocol = UNSPECIFIED_INT; private int mMtuV4; private int mMtuV6; private int mNetworkTypeBitmask; private @TelephonyManager.NetworkTypeBitMask int mNetworkTypeBitmask; private @TelephonyManager.NetworkTypeBitMask long mLingeringNetworkTypeBitmask; private boolean mCarrierEnabled; private int mProfileId; private boolean mModemCognitive; Loading @@ -1661,6 +1734,7 @@ public class ApnSetting implements Parcelable { private int mApnSetId; private int mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID; private int mSkip464Xlat = Carriers.SKIP_464XLAT_DEFAULT; private boolean mAlwaysOn; /** * Default constructor for Builder. Loading Loading @@ -2011,6 +2085,19 @@ public class ApnSetting implements Parcelable { return this; } /** * Sets lingering Radio Technology (Network Type) for this APN. * * @param lingeringNetworkTypeBitmask the Radio Technology (Network Type) that should linger * @hide */ @NonNull public Builder setLingeringNetworkTypeBitmask(@TelephonyManager.NetworkTypeBitMask long lingeringNetworkTypeBitmask) { this.mLingeringNetworkTypeBitmask = lingeringNetworkTypeBitmask; return this; } /** * Sets the MVNO match type for this APN. * Loading Loading @@ -2047,6 +2134,18 @@ public class ApnSetting implements Parcelable { return this; } /** * Sets whether the PDU session brought up by this APN should always be on. * See 3GPP TS 23.501 section 5.6.13 * * @param alwaysOn the always on status to set for this APN * @hide */ public Builder setAlwaysOn(boolean alwaysOn) { this.mAlwaysOn = alwaysOn; return this; } /** * Builds {@link ApnSetting} from this builder. * Loading