Loading src/java/android/provider/Telephony.java +13 −1 Original line number Diff line number Diff line Loading @@ -2585,9 +2585,21 @@ public final class Telephony { * This should be spread to other technologies, * but is currently only used for LTE (14) and eHRPD (13). * <P>Type: INTEGER</P> * @deprecated Use {@link #BEARER_BITMASK} instead. */ @Deprecated public static final String BEARER = "bearer"; /** * Radio Access Technology bitmask. * To check what values can be contained, refer to {@link android.telephony.ServiceState}. * 0 indicates all techs otherwise first bit refers to RAT/bearer 1, second bit refers to * RAT/bearer 2 and so on. * Bitmask for a radio tech R is (1 << (R - 1)) * <P>Type: INTEGER</P> */ public static final String BEARER_BITMASK = "bearer_bitmask"; /** * MVNO type: * {@code SPN (Service Provider Name), IMSI, GID (Group Identifier Level 1)}. Loading Loading @@ -2660,7 +2672,7 @@ public final class Telephony { * <p>Type: INTEGER </p> * @hide */ public static final String EDITED = "user_edited"; public static final String EDITED = "edited"; /** * Following are possible values for the EDITED field Loading src/java/com/android/internal/telephony/dataconnection/ApnSetting.java +21 −14 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.telephony.dataconnection; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.internal.telephony.PhoneConstants; Loading Loading @@ -61,7 +62,15 @@ public class ApnSetting { * This should be spread to other technologies, * but currently only used for LTE(14) and EHRPD(13). */ public final int bearer; private final int bearer; /** * Radio Access Technology info * To check what values can hold, refer to ServiceState.java. This is a bitmask of radio * technologies in ServiceState. * This should be spread to other technologies, * but currently only used for LTE(14) and EHRPD(13). */ public final int bearerBitmask; /* ID of the profile in the modem */ public final int profileId; Loading Loading @@ -90,8 +99,8 @@ public class ApnSetting { String mmsc, String mmsProxy, String mmsPort, String user, String password, int authType, String[] types, String protocol, String roamingProtocol, boolean carrierEnabled, int bearer, int profileId, boolean modemCognitive, int maxConns, int waitTime, int maxConnsTime, int mtu, String mvnoType, String mvnoMatchData) { int bearerBitmask, int profileId, boolean modemCognitive, int maxConns, int waitTime, int maxConnsTime, int mtu, String mvnoType, String mvnoMatchData) { this.id = id; this.numeric = numeric; this.carrier = carrier; Loading @@ -112,6 +121,7 @@ public class ApnSetting { this.roamingProtocol = roamingProtocol; this.carrierEnabled = carrierEnabled; this.bearer = bearer; this.bearerBitmask = (bearerBitmask | ServiceState.getBitmaskForTech(bearer)); this.profileId = profileId; this.modemCognitive = modemCognitive; this.maxConns = maxConns; Loading Loading @@ -139,12 +149,12 @@ public class ApnSetting { * v2 format: * [ApnSettingV2] <carrier>, <apn>, <proxy>, <port>, <user>, <password>, <server>, * <mmsc>, <mmsproxy>, <mmsport>, <mcc>, <mnc>, <authtype>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearer>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearerBitmask>, * * v3 format: * [ApnSettingV3] <carrier>, <apn>, <proxy>, <port>, <user>, <password>, <server>, * <mmsc>, <mmsproxy>, <mmsport>, <mcc>, <mnc>, <authtype>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearer>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearerBitmask>, * <profileId>, <modemCognitive>, <maxConns>, <waitTime>, <maxConnsTime>, <mtu>, * <mvnoType>, <mvnoMatchData> * Loading Loading @@ -181,7 +191,7 @@ public class ApnSetting { String[] typeArray; String protocol, roamingProtocol; boolean carrierEnabled; int bearer = 0; int bearerBitmask = 0; int profileId = 0; boolean modemCognitive = false; int maxConns = 0; Loading @@ -196,7 +206,6 @@ public class ApnSetting { protocol = RILConstants.SETUP_DATA_PROTOCOL_IP; roamingProtocol = RILConstants.SETUP_DATA_PROTOCOL_IP; carrierEnabled = true; bearer = 0; } else { if (a.length < 18) { return null; Loading @@ -206,10 +215,7 @@ public class ApnSetting { roamingProtocol = a[15]; carrierEnabled = Boolean.parseBoolean(a[16]); try { bearer = Integer.parseInt(a[17]); } catch (NumberFormatException ex) { } bearerBitmask = ServiceState.getBitmaskFromString(a[17]); if (a.length > 22) { modemCognitive = Boolean.parseBoolean(a[19]); Loading @@ -234,8 +240,8 @@ public class ApnSetting { } return new ApnSetting(-1,a[10]+a[11],a[0],a[1],a[2],a[3],a[7],a[8], a[9],a[4],a[5],authType,typeArray,protocol,roamingProtocol,carrierEnabled,bearer, profileId, modemCognitive, maxConns, waitTime, maxConnsTime, mtu, a[9],a[4],a[5],authType,typeArray,protocol,roamingProtocol,carrierEnabled,0, bearerBitmask, profileId, modemCognitive, maxConns, waitTime, maxConnsTime, mtu, mvnoType, mvnoMatchData); } Loading Loading @@ -286,6 +292,7 @@ public class ApnSetting { sb.append(", ").append(roamingProtocol); sb.append(", ").append(carrierEnabled); sb.append(", ").append(bearer); sb.append(", ").append(bearerBitmask); sb.append(", ").append(profileId); sb.append(", ").append(modemCognitive); sb.append(", ").append(maxConns); Loading src/java/com/android/internal/telephony/dataconnection/DataProfile.java +3 −3 Original line number Diff line number Diff line Loading @@ -72,9 +72,9 @@ public class DataProfile { DataProfile(ApnSetting apn, boolean isRoaming) { this(apn.profileId, apn.apn, isRoaming? apn.protocol : apn.roamingProtocol, apn.authType, apn.user, apn.password, apn.bearer == 0 ? TYPE_COMMON : (ServiceState.isCdma(apn.bearer) ? TYPE_3GPP2 : TYPE_3GPP), apn.maxConnsTime, apn.maxConns, apn.waitTime, apn.carrierEnabled); apn.authType, apn.user, apn.password, apn.bearerBitmask == 0 ? TYPE_COMMON : (ServiceState.hasCdma(apn.bearerBitmask) ? TYPE_3GPP2 : TYPE_3GPP), apn.maxConnsTime, apn.maxConns, apn.waitTime, apn.carrierEnabled); } public static Parcel toParcel(Parcel pc, DataProfile[] dps) { Loading src/java/com/android/internal/telephony/dataconnection/DcTracker.java +9 −11 Original line number Diff line number Diff line Loading @@ -40,9 +40,7 @@ import android.os.AsyncResult; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.Messenger; import android.os.RegistrantList; import android.os.ServiceManager; import android.os.SystemClock; Loading @@ -58,7 +56,6 @@ import android.telephony.cdma.CdmaCellLocation; import android.telephony.gsm.GsmCellLocation; import android.text.TextUtils; import android.util.EventLog; import android.util.SparseArray; import android.view.WindowManager; import android.telephony.Rlog; Loading @@ -85,8 +82,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.Objects; import java.lang.StringBuilder; import android.provider.Settings; import com.android.internal.telephony.ServiceStateTracker; /** * {@hide} Loading Loading @@ -1198,6 +1193,7 @@ public final class DcTracker extends DcTrackerBase { cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.CARRIER_ENABLED)) == 1, cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.BEARER)), cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.BEARER_BITMASK)), cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.PROFILE_ID)), cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.MODEM_COGNITIVE)) == 1, Loading Loading @@ -2373,7 +2369,7 @@ public final class DcTracker extends DcTrackerBase { xorEquals(first.proxy, second.proxy) && xorEquals(first.port, second.port) && first.carrierEnabled == second.carrierEnabled && first.bearer == second.bearer && first.bearerBitmask == second.bearerBitmask && first.profileId == second.profileId && Objects.equals(first.mvnoType, second.mvnoType) && Objects.equals(first.mvnoMatchData, second.mvnoMatchData) && Loading Loading @@ -2403,11 +2399,13 @@ public final class DcTracker extends DcTrackerBase { String protocol = src.protocol.equals("IPV4V6") ? src.protocol : dest.protocol; String roamingProtocol = src.roamingProtocol.equals("IPV4V6") ? src.roamingProtocol : dest.roamingProtocol; int bearerBitmask = (dest.bearerBitmask == 0 || src.bearerBitmask == 0) ? 0 : (dest.bearerBitmask | src.bearerBitmask); return new ApnSetting(dest.id, dest.numeric, dest.carrier, dest.apn, proxy, port, mmsc, mmsProxy, mmsPort, dest.user, dest.password, dest.authType, resultTypes.toArray(new String[0]), protocol, roamingProtocol, dest.carrierEnabled, dest.bearer, dest.profileId, roamingProtocol, dest.carrierEnabled, 0, bearerBitmask, dest.profileId, (dest.modemCognitive || src.modemCognitive), dest.maxConns, dest.waitTime, dest.maxConnsTime, dest.mtu, dest.mvnoType, dest.mvnoMatchData); } Loading Loading @@ -2492,7 +2490,7 @@ public final class DcTracker extends DcTrackerBase { + mPreferredApn.numeric + ":" + mPreferredApn); } if (mPreferredApn.numeric.equals(operator)) { if (mPreferredApn.bearer == 0 || mPreferredApn.bearer == radioTech) { if (ServiceState.bitmaskHasTech(mPreferredApn.bearerBitmask, radioTech)) { apnList.add(mPreferredApn); if (DBG) log("buildWaitingApns: X added preferred apnList=" + apnList); return apnList; Loading @@ -2512,13 +2510,13 @@ public final class DcTracker extends DcTrackerBase { for (ApnSetting apn : mAllApnSettings) { if (DBG) log("buildWaitingApns: apn=" + apn); if (apn.canHandleType(requestedApnType)) { if (apn.bearer == 0 || apn.bearer == radioTech) { if (ServiceState.bitmaskHasTech(apn.bearerBitmask, radioTech)) { if (DBG) log("buildWaitingApns: adding apn=" + apn.toString()); apnList.add(apn); } else { if (DBG) { log("buildWaitingApns: bearer:" + apn.bearer + " != " + "radioTech:" + radioTech); log("buildWaitingApns: bearerBitmask:" + apn.bearerBitmask + " does " + "not include radioTech:" + radioTech); } } } else { Loading src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java +4 −9 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.os.SystemProperties; import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyManager; Loading Loading @@ -693,17 +694,14 @@ public abstract class DcTrackerBase extends Handler { log("fetchDunApn: net.tethering.noprovisioning=true ret: null"); return null; } int bearer = -1; int bearer = mPhone.getServiceState().getRilDataRadioTechnology(); ApnSetting retDunSetting = null; String apnData = Settings.Global.getString(mResolver, Settings.Global.TETHER_DUN_APN); List<ApnSetting> dunSettings = ApnSetting.arrayFromString(apnData); IccRecords r = mIccRecords.get(); for (ApnSetting dunSetting : dunSettings) { String operator = (r != null) ? r.getOperatorNumeric() : ""; if (dunSetting.bearer != 0) { if (bearer == -1) bearer = mPhone.getServiceState().getRilDataRadioTechnology(); if (dunSetting.bearer != bearer) continue; } if (!ServiceState.bitmaskHasTech(dunSetting.bearerBitmask, bearer)) continue; if (dunSetting.numeric.equals(operator)) { if (dunSetting.hasMvnoParams()) { if (r != null && Loading @@ -725,10 +723,7 @@ public abstract class DcTrackerBase extends Handler { for (String apn : apnArrayData) { ApnSetting dunSetting = ApnSetting.fromString(apn); if (dunSetting != null) { if (dunSetting.bearer != 0) { if (bearer == -1) bearer = mPhone.getServiceState().getRilDataRadioTechnology(); if (dunSetting.bearer != bearer) continue; } if (!ServiceState.bitmaskHasTech(dunSetting.bearerBitmask, bearer)) continue; if (dunSetting.hasMvnoParams()) { if (r != null && mvnoMatches(r, dunSetting.mvnoType, dunSetting.mvnoMatchData)) { Loading Loading
src/java/android/provider/Telephony.java +13 −1 Original line number Diff line number Diff line Loading @@ -2585,9 +2585,21 @@ public final class Telephony { * This should be spread to other technologies, * but is currently only used for LTE (14) and eHRPD (13). * <P>Type: INTEGER</P> * @deprecated Use {@link #BEARER_BITMASK} instead. */ @Deprecated public static final String BEARER = "bearer"; /** * Radio Access Technology bitmask. * To check what values can be contained, refer to {@link android.telephony.ServiceState}. * 0 indicates all techs otherwise first bit refers to RAT/bearer 1, second bit refers to * RAT/bearer 2 and so on. * Bitmask for a radio tech R is (1 << (R - 1)) * <P>Type: INTEGER</P> */ public static final String BEARER_BITMASK = "bearer_bitmask"; /** * MVNO type: * {@code SPN (Service Provider Name), IMSI, GID (Group Identifier Level 1)}. Loading Loading @@ -2660,7 +2672,7 @@ public final class Telephony { * <p>Type: INTEGER </p> * @hide */ public static final String EDITED = "user_edited"; public static final String EDITED = "edited"; /** * Following are possible values for the EDITED field Loading
src/java/com/android/internal/telephony/dataconnection/ApnSetting.java +21 −14 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.internal.telephony.dataconnection; import android.telephony.ServiceState; import android.text.TextUtils; import com.android.internal.telephony.PhoneConstants; Loading Loading @@ -61,7 +62,15 @@ public class ApnSetting { * This should be spread to other technologies, * but currently only used for LTE(14) and EHRPD(13). */ public final int bearer; private final int bearer; /** * Radio Access Technology info * To check what values can hold, refer to ServiceState.java. This is a bitmask of radio * technologies in ServiceState. * This should be spread to other technologies, * but currently only used for LTE(14) and EHRPD(13). */ public final int bearerBitmask; /* ID of the profile in the modem */ public final int profileId; Loading Loading @@ -90,8 +99,8 @@ public class ApnSetting { String mmsc, String mmsProxy, String mmsPort, String user, String password, int authType, String[] types, String protocol, String roamingProtocol, boolean carrierEnabled, int bearer, int profileId, boolean modemCognitive, int maxConns, int waitTime, int maxConnsTime, int mtu, String mvnoType, String mvnoMatchData) { int bearerBitmask, int profileId, boolean modemCognitive, int maxConns, int waitTime, int maxConnsTime, int mtu, String mvnoType, String mvnoMatchData) { this.id = id; this.numeric = numeric; this.carrier = carrier; Loading @@ -112,6 +121,7 @@ public class ApnSetting { this.roamingProtocol = roamingProtocol; this.carrierEnabled = carrierEnabled; this.bearer = bearer; this.bearerBitmask = (bearerBitmask | ServiceState.getBitmaskForTech(bearer)); this.profileId = profileId; this.modemCognitive = modemCognitive; this.maxConns = maxConns; Loading Loading @@ -139,12 +149,12 @@ public class ApnSetting { * v2 format: * [ApnSettingV2] <carrier>, <apn>, <proxy>, <port>, <user>, <password>, <server>, * <mmsc>, <mmsproxy>, <mmsport>, <mcc>, <mnc>, <authtype>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearer>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearerBitmask>, * * v3 format: * [ApnSettingV3] <carrier>, <apn>, <proxy>, <port>, <user>, <password>, <server>, * <mmsc>, <mmsproxy>, <mmsport>, <mcc>, <mnc>, <authtype>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearer>, * <type>[| <type>...], <protocol>, <roaming_protocol>, <carrierEnabled>, <bearerBitmask>, * <profileId>, <modemCognitive>, <maxConns>, <waitTime>, <maxConnsTime>, <mtu>, * <mvnoType>, <mvnoMatchData> * Loading Loading @@ -181,7 +191,7 @@ public class ApnSetting { String[] typeArray; String protocol, roamingProtocol; boolean carrierEnabled; int bearer = 0; int bearerBitmask = 0; int profileId = 0; boolean modemCognitive = false; int maxConns = 0; Loading @@ -196,7 +206,6 @@ public class ApnSetting { protocol = RILConstants.SETUP_DATA_PROTOCOL_IP; roamingProtocol = RILConstants.SETUP_DATA_PROTOCOL_IP; carrierEnabled = true; bearer = 0; } else { if (a.length < 18) { return null; Loading @@ -206,10 +215,7 @@ public class ApnSetting { roamingProtocol = a[15]; carrierEnabled = Boolean.parseBoolean(a[16]); try { bearer = Integer.parseInt(a[17]); } catch (NumberFormatException ex) { } bearerBitmask = ServiceState.getBitmaskFromString(a[17]); if (a.length > 22) { modemCognitive = Boolean.parseBoolean(a[19]); Loading @@ -234,8 +240,8 @@ public class ApnSetting { } return new ApnSetting(-1,a[10]+a[11],a[0],a[1],a[2],a[3],a[7],a[8], a[9],a[4],a[5],authType,typeArray,protocol,roamingProtocol,carrierEnabled,bearer, profileId, modemCognitive, maxConns, waitTime, maxConnsTime, mtu, a[9],a[4],a[5],authType,typeArray,protocol,roamingProtocol,carrierEnabled,0, bearerBitmask, profileId, modemCognitive, maxConns, waitTime, maxConnsTime, mtu, mvnoType, mvnoMatchData); } Loading Loading @@ -286,6 +292,7 @@ public class ApnSetting { sb.append(", ").append(roamingProtocol); sb.append(", ").append(carrierEnabled); sb.append(", ").append(bearer); sb.append(", ").append(bearerBitmask); sb.append(", ").append(profileId); sb.append(", ").append(modemCognitive); sb.append(", ").append(maxConns); Loading
src/java/com/android/internal/telephony/dataconnection/DataProfile.java +3 −3 Original line number Diff line number Diff line Loading @@ -72,9 +72,9 @@ public class DataProfile { DataProfile(ApnSetting apn, boolean isRoaming) { this(apn.profileId, apn.apn, isRoaming? apn.protocol : apn.roamingProtocol, apn.authType, apn.user, apn.password, apn.bearer == 0 ? TYPE_COMMON : (ServiceState.isCdma(apn.bearer) ? TYPE_3GPP2 : TYPE_3GPP), apn.maxConnsTime, apn.maxConns, apn.waitTime, apn.carrierEnabled); apn.authType, apn.user, apn.password, apn.bearerBitmask == 0 ? TYPE_COMMON : (ServiceState.hasCdma(apn.bearerBitmask) ? TYPE_3GPP2 : TYPE_3GPP), apn.maxConnsTime, apn.maxConns, apn.waitTime, apn.carrierEnabled); } public static Parcel toParcel(Parcel pc, DataProfile[] dps) { Loading
src/java/com/android/internal/telephony/dataconnection/DcTracker.java +9 −11 Original line number Diff line number Diff line Loading @@ -40,9 +40,7 @@ import android.os.AsyncResult; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; import android.os.Messenger; import android.os.RegistrantList; import android.os.ServiceManager; import android.os.SystemClock; Loading @@ -58,7 +56,6 @@ import android.telephony.cdma.CdmaCellLocation; import android.telephony.gsm.GsmCellLocation; import android.text.TextUtils; import android.util.EventLog; import android.util.SparseArray; import android.view.WindowManager; import android.telephony.Rlog; Loading @@ -85,8 +82,6 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.Objects; import java.lang.StringBuilder; import android.provider.Settings; import com.android.internal.telephony.ServiceStateTracker; /** * {@hide} Loading Loading @@ -1198,6 +1193,7 @@ public final class DcTracker extends DcTrackerBase { cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.CARRIER_ENABLED)) == 1, cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.BEARER)), cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.BEARER_BITMASK)), cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.PROFILE_ID)), cursor.getInt(cursor.getColumnIndexOrThrow( Telephony.Carriers.MODEM_COGNITIVE)) == 1, Loading Loading @@ -2373,7 +2369,7 @@ public final class DcTracker extends DcTrackerBase { xorEquals(first.proxy, second.proxy) && xorEquals(first.port, second.port) && first.carrierEnabled == second.carrierEnabled && first.bearer == second.bearer && first.bearerBitmask == second.bearerBitmask && first.profileId == second.profileId && Objects.equals(first.mvnoType, second.mvnoType) && Objects.equals(first.mvnoMatchData, second.mvnoMatchData) && Loading Loading @@ -2403,11 +2399,13 @@ public final class DcTracker extends DcTrackerBase { String protocol = src.protocol.equals("IPV4V6") ? src.protocol : dest.protocol; String roamingProtocol = src.roamingProtocol.equals("IPV4V6") ? src.roamingProtocol : dest.roamingProtocol; int bearerBitmask = (dest.bearerBitmask == 0 || src.bearerBitmask == 0) ? 0 : (dest.bearerBitmask | src.bearerBitmask); return new ApnSetting(dest.id, dest.numeric, dest.carrier, dest.apn, proxy, port, mmsc, mmsProxy, mmsPort, dest.user, dest.password, dest.authType, resultTypes.toArray(new String[0]), protocol, roamingProtocol, dest.carrierEnabled, dest.bearer, dest.profileId, roamingProtocol, dest.carrierEnabled, 0, bearerBitmask, dest.profileId, (dest.modemCognitive || src.modemCognitive), dest.maxConns, dest.waitTime, dest.maxConnsTime, dest.mtu, dest.mvnoType, dest.mvnoMatchData); } Loading Loading @@ -2492,7 +2490,7 @@ public final class DcTracker extends DcTrackerBase { + mPreferredApn.numeric + ":" + mPreferredApn); } if (mPreferredApn.numeric.equals(operator)) { if (mPreferredApn.bearer == 0 || mPreferredApn.bearer == radioTech) { if (ServiceState.bitmaskHasTech(mPreferredApn.bearerBitmask, radioTech)) { apnList.add(mPreferredApn); if (DBG) log("buildWaitingApns: X added preferred apnList=" + apnList); return apnList; Loading @@ -2512,13 +2510,13 @@ public final class DcTracker extends DcTrackerBase { for (ApnSetting apn : mAllApnSettings) { if (DBG) log("buildWaitingApns: apn=" + apn); if (apn.canHandleType(requestedApnType)) { if (apn.bearer == 0 || apn.bearer == radioTech) { if (ServiceState.bitmaskHasTech(apn.bearerBitmask, radioTech)) { if (DBG) log("buildWaitingApns: adding apn=" + apn.toString()); apnList.add(apn); } else { if (DBG) { log("buildWaitingApns: bearer:" + apn.bearer + " != " + "radioTech:" + radioTech); log("buildWaitingApns: bearerBitmask:" + apn.bearerBitmask + " does " + "not include radioTech:" + radioTech); } } } else { Loading
src/java/com/android/internal/telephony/dataconnection/DcTrackerBase.java +4 −9 Original line number Diff line number Diff line Loading @@ -42,6 +42,7 @@ import android.os.SystemProperties; import android.preference.PreferenceManager; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyManager; Loading Loading @@ -693,17 +694,14 @@ public abstract class DcTrackerBase extends Handler { log("fetchDunApn: net.tethering.noprovisioning=true ret: null"); return null; } int bearer = -1; int bearer = mPhone.getServiceState().getRilDataRadioTechnology(); ApnSetting retDunSetting = null; String apnData = Settings.Global.getString(mResolver, Settings.Global.TETHER_DUN_APN); List<ApnSetting> dunSettings = ApnSetting.arrayFromString(apnData); IccRecords r = mIccRecords.get(); for (ApnSetting dunSetting : dunSettings) { String operator = (r != null) ? r.getOperatorNumeric() : ""; if (dunSetting.bearer != 0) { if (bearer == -1) bearer = mPhone.getServiceState().getRilDataRadioTechnology(); if (dunSetting.bearer != bearer) continue; } if (!ServiceState.bitmaskHasTech(dunSetting.bearerBitmask, bearer)) continue; if (dunSetting.numeric.equals(operator)) { if (dunSetting.hasMvnoParams()) { if (r != null && Loading @@ -725,10 +723,7 @@ public abstract class DcTrackerBase extends Handler { for (String apn : apnArrayData) { ApnSetting dunSetting = ApnSetting.fromString(apn); if (dunSetting != null) { if (dunSetting.bearer != 0) { if (bearer == -1) bearer = mPhone.getServiceState().getRilDataRadioTechnology(); if (dunSetting.bearer != bearer) continue; } if (!ServiceState.bitmaskHasTech(dunSetting.bearerBitmask, bearer)) continue; if (dunSetting.hasMvnoParams()) { if (r != null && mvnoMatches(r, dunSetting.mvnoType, dunSetting.mvnoMatchData)) { Loading