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
diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
index 40ee58c..56dbfb8 100644
--- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java
@@ -2322,27 +2322,26 @@
         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) {