Prefer the preferred APN for all types it supports

We used to only prefer it when connecting for default connection purposes,
but it makes sense to use the preference for all apn types it supports.

bug:6377793
Change-Id: I8b26b77fc0787121749cce9d32303ab24cc72c75
This commit is contained in:
Robert Greenwalt
2012-04-24 10:41:54 -07:00
parent 867b96bd15
commit 7725180c64

View File

@@ -2322,27 +2322,26 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
String operator = mPhone.mIccRecords.getOperatorNumeric();
int networkType = mPhone.getServiceState().getNetworkType();
if (requestedApnType.equals(Phone.APN_TYPE_DEFAULT)) {
if (canSetPreferApn && mPreferredApn != null) {
if (DBG) {
log("buildWaitingApns: Preferred APN:" + operator + ":"
if (canSetPreferApn && mPreferredApn != null &&
mPreferredApn.canHandleType(requestedApnType)) {
if (DBG) {
log("buildWaitingApns: Preferred APN:" + operator + ":"
+ mPreferredApn.numeric + ":" + mPreferredApn);
}
if (mPreferredApn.numeric.equals(operator)) {
if (mPreferredApn.bearer == 0 || mPreferredApn.bearer == networkType) {
apnList.add(mPreferredApn);
if (DBG) log("buildWaitingApns: X added preferred apnList=" + apnList);
return apnList;
} else {
if (DBG) log("buildWaitingApns: no preferred APN");
setPreferredApn(-1);
mPreferredApn = null;
}
}
if (mPreferredApn.numeric.equals(operator)) {
if (mPreferredApn.bearer == 0 || mPreferredApn.bearer == networkType) {
apnList.add(mPreferredApn);
if (DBG) log("buildWaitingApns: X added preferred apnList=" + apnList);
return apnList;
} else {
if (DBG) log("buildWaitingApns: no preferred APN");
setPreferredApn(-1);
mPreferredApn = null;
}
} else {
if (DBG) log("buildWaitingApns: no preferred APN");
setPreferredApn(-1);
mPreferredApn = null;
}
}
if (mAllApns != null) {