diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
index 78283df..c8e09b9 100644
--- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java
@@ -81,8 +81,6 @@
     public int getAvailabilityStatus(int subId) {
         boolean visible;
         final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
-        final TelephonyManager telephonyManager = TelephonyManager
-                .from(mContext).createForSubscriptionId(subId);
         if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             visible = false;
         } else if (carrierConfig == null) {
@@ -130,13 +128,14 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object object) {
-        final int settingsMode = Integer.parseInt((String) object);
+        final int newPreferredNetworkMode = Integer.parseInt((String) object);
 
-        if (mTelephonyManager.setPreferredNetworkType(mSubId, settingsMode)) {
+        if (mTelephonyManager.setPreferredNetworkTypeBitmask(
+                MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode))) {
             Settings.Global.putInt(mContext.getContentResolver(),
                     Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
-                    settingsMode);
-            updatePreferenceValueAndSummary((ListPreference) preference, settingsMode);
+                    newPreferredNetworkMode);
+            updatePreferenceValueAndSummary((ListPreference) preference, newPreferredNetworkMode);
             return true;
         }
 
diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
index 118e4d5..d3784ae 100644
--- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java
+++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java
@@ -760,4 +760,151 @@
         }
         return activeSubIds;
     }
+
+    /**
+     *  Imported from {@link android.telephony.RadioAccessFamily}
+     */
+    public static long getRafFromNetworkType(int type) {
+        switch (type) {
+            case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF:
+                return TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY:
+                return TelephonyManagerConstants.GSM;
+            case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY:
+                return TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS:
+                return TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO:
+                return TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY:
+                return TelephonyManagerConstants.LTE;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO:
+                return TelephonyManagerConstants.CDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA:
+                return TelephonyManagerConstants.EVDO;
+            case TelephonyManagerConstants.NETWORK_MODE_GLOBAL:
+                return TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO;
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY:
+                return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA:
+                return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM:
+                return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.GSM;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.GSM;
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA:
+                return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA:
+                return TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_ONLY):
+                return TelephonyManagerConstants.NR;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManagerConstants.WCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.GSM;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.WCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+            case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA):
+                return TelephonyManagerConstants.NR
+                        | TelephonyManagerConstants.LTE
+                        | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA
+                        | TelephonyManagerConstants.CDMA
+                        | TelephonyManagerConstants.EVDO
+                        | TelephonyManagerConstants.GSM
+                        | TelephonyManagerConstants.WCDMA;
+
+            default:
+                return TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN;
+        }
+    }
 }
diff --git a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
index 1268024..b01852d 100644
--- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
+++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java
@@ -49,8 +49,6 @@
     @Override
     public int getAvailabilityStatus(int subId) {
         final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(subId);
-        final TelephonyManager telephonyManager = TelephonyManager
-                .from(mContext).createForSubscriptionId(subId);
         boolean visible;
         if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
             visible = false;
@@ -81,14 +79,15 @@
 
     @Override
     public boolean onPreferenceChange(Preference preference, Object object) {
-        final int settingsMode = Integer.parseInt((String) object);
+        final int newPreferredNetworkMode = Integer.parseInt((String) object);
 
-        if (mTelephonyManager.setPreferredNetworkType(mSubId, settingsMode)) {
+        if (mTelephonyManager.setPreferredNetworkTypeBitmask(
+                MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode))) {
             Settings.Global.putInt(mContext.getContentResolver(),
                     Settings.Global.PREFERRED_NETWORK_MODE + mSubId,
-                    settingsMode);
+                    newPreferredNetworkMode);
             final ListPreference listPreference = (ListPreference) preference;
-            listPreference.setSummary(getPreferredNetworkModeSummaryResId(settingsMode));
+            listPreference.setSummary(getPreferredNetworkModeSummaryResId(newPreferredNetworkMode));
             return true;
         }
 
diff --git a/src/com/android/settings/network/telephony/TelephonyConstants.java b/src/com/android/settings/network/telephony/TelephonyConstants.java
index 78a177e..8751cc2 100644
--- a/src/com/android/settings/network/telephony/TelephonyConstants.java
+++ b/src/com/android/settings/network/telephony/TelephonyConstants.java
@@ -18,6 +18,8 @@
 
 import android.telephony.TelephonyManager;
 
+import android.telephony.TelephonyManager;
+
 /**
  * Contains hidden constants copied from the platform.
  */
@@ -203,6 +205,35 @@
          * NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA
          */
         public static final int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33;
+
+
+        // Grouping of RAFs
+        // imported from {@link android.telephony.RadioAccessFamily}
+        // 2G
+        public static final long GSM = TelephonyManager.NETWORK_TYPE_BITMASK_GSM
+                | TelephonyManager.NETWORK_TYPE_BITMASK_GPRS
+                | TelephonyManager.NETWORK_TYPE_BITMASK_EDGE;
+        public static final long CDMA = TelephonyManager.NETWORK_TYPE_BITMASK_CDMA
+                | TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT;
+
+        // 3G
+        public static final long EVDO = TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0
+                | TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A
+                | TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B
+                | TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD;
+        public static final long HS = TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA
+                | TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA
+                | TelephonyManager.NETWORK_TYPE_BITMASK_HSPA
+                | TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP;
+        public static final long WCDMA = HS | TelephonyManager.NETWORK_TYPE_BITMASK_UMTS;
+
+        // 4G
+        public static final long LTE = TelephonyManager.NETWORK_TYPE_BITMASK_LTE
+                | TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA;
+
+        // 5G
+        public static final long NR = TelephonyManager.NETWORK_TYPE_BITMASK_NR;
+
     }
 
     /**
diff --git a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
index ea96e29..d12d543 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java
@@ -20,6 +20,7 @@
 
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
+import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFromNetworkType;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -392,8 +393,8 @@
 
     @Test
     public void onPreferenceChange_updateSuccess() {
-        doReturn(true).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+        doReturn(true).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
+                getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
 
         mController.onPreferenceChange(mPreference,
                 String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
@@ -405,8 +406,8 @@
 
     @Test
     public void onPreferenceChange_updateFail() {
-        doReturn(false).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA);
+        doReturn(false).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
+                getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
 
         mController.onPreferenceChange(mPreference,
                 String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA));
diff --git a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
index 0d50e9e..1feb08b 100644
--- a/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceControllerTest.java
@@ -18,6 +18,7 @@
 
 import static com.android.settings.core.BasePreferenceController.AVAILABLE;
 import static com.android.settings.core.BasePreferenceController.CONDITIONALLY_UNAVAILABLE;
+import static com.android.settings.network.telephony.MobileNetworkUtils.getRafFromNetworkType;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -140,8 +141,8 @@
 
     @Test
     public void onPreferenceChange_updateSuccess() {
-        doReturn(true).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
+        doReturn(true).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
+                getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
 
         mController.onPreferenceChange(mPreference,
                 String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
@@ -153,8 +154,8 @@
 
     @Test
     public void onPreferenceChange_updateFail() {
-        doReturn(false).when(mTelephonyManager).setPreferredNetworkType(SUB_ID,
-                TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA);
+        doReturn(false).when(mTelephonyManager).setPreferredNetworkTypeBitmask(
+                getRafFromNetworkType(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
 
         mController.onPreferenceChange(mPreference,
                 String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA));
