diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index ca673a1ce93..5b5fc4e489b 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -121,6 +121,8 @@ public class EnabledNetworkModePreferenceController extends super.updateState(preference); final ListPreference listPreference = (ListPreference) preference; final int networkMode = getPreferredNetworkMode(); + Log.d(LOG_TAG, "updateState networkMode: " + networkMode); + updatePreferenceEntries(listPreference); updatePreferenceValueAndSummary(listPreference, networkMode); } @@ -131,9 +133,6 @@ public class EnabledNetworkModePreferenceController extends if (mTelephonyManager.setPreferredNetworkTypeBitmask( MobileNetworkUtils.getRafFromNetworkType(newPreferredNetworkMode))) { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.PREFERRED_NETWORK_MODE + mSubId, - newPreferredNetworkMode); updatePreferenceValueAndSummary((ListPreference) preference, newPreferredNetworkMode); return true; } @@ -155,16 +154,21 @@ public class EnabledNetworkModePreferenceController extends : false; final long supportedRadioBitmask = mTelephonyManager.getSupportedRadioAccessFamily(); + final boolean is5gEnabledByCarrier = (mTelephonyManager.getAllowedNetworkTypes() + & TelephonyManager.NETWORK_TYPE_BITMASK_NR) > 0; mDisplay5gList = checkSupportedRadioBitmask( - supportedRadioBitmask, mTelephonyManager.NETWORK_TYPE_BITMASK_NR); - + supportedRadioBitmask, mTelephonyManager.NETWORK_TYPE_BITMASK_NR) + && is5gEnabledByCarrier; lifecycle.addObserver(this); } private int getPreferredNetworkMode() { - return Settings.Global.getInt(mContext.getContentResolver(), + long preferredNetworkBitMask = MobileNetworkUtils.getRafFromNetworkType( + Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + mSubId, - TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); + TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE)); + return MobileNetworkUtils.getNetworkTypeFromRaf((int) + (preferredNetworkBitMask & mTelephonyManager.getAllowedNetworkTypes())); } private void updatePreferenceEntries(ListPreference preference) { @@ -175,10 +179,7 @@ public class EnabledNetworkModePreferenceController extends mContext.getContentResolver(), android.provider.Settings.Global.LTE_SERVICE_FORCED + mSubId, 0); - final int settingsNetworkMode = android.provider.Settings.Global.getInt( - mContext.getContentResolver(), - android.provider.Settings.Global.PREFERRED_NETWORK_MODE + mSubId, - TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); + final int settingsNetworkMode = getPreferredNetworkMode(); if (mTelephonyManager.isGlobalModeEnabled()) { if (lteForced == 0) { preference.setEntries( diff --git a/src/com/android/settings/network/telephony/MobileNetworkUtils.java b/src/com/android/settings/network/telephony/MobileNetworkUtils.java index 955b80fb6d3..875a804ee27 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -61,6 +61,15 @@ import com.android.settingslib.graph.SignalDrawable; import java.util.Arrays; import java.util.List; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.CDMA; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.EVDO; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.GSM; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.LTE; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.NR; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.RAF_TD_SCDMA; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.RAF_UNKNOWN; +import static com.android.settings.network.telephony.TelephonyConstants.RadioAccessFamily.WCDMA; + public class MobileNetworkUtils { private static final String TAG = "MobileNetworkUtils"; @@ -658,144 +667,166 @@ public class MobileNetworkUtils { public static long getRafFromNetworkType(int type) { switch (type) { case TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF: - return TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return GSM | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY: - return TelephonyManagerConstants.GSM; + return GSM; case TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY: - return TelephonyManagerConstants.WCDMA; + return WCDMA; case TelephonyManagerConstants.NETWORK_MODE_GSM_UMTS: - return TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return GSM | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO: - return TelephonyManagerConstants.CDMA - | TelephonyManagerConstants.EVDO; + return CDMA | EVDO; case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO: - return TelephonyManagerConstants.LTE - | TelephonyManagerConstants.CDMA - | TelephonyManagerConstants.EVDO; + return LTE | CDMA | EVDO; case TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA: - return TelephonyManagerConstants.LTE - | TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return LTE | GSM | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA: - return TelephonyManagerConstants.LTE - | TelephonyManagerConstants.CDMA - | TelephonyManagerConstants.EVDO - | TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return LTE | CDMA | EVDO | GSM | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY: - return TelephonyManagerConstants.LTE; + return LTE; case TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA: - return TelephonyManagerConstants.LTE - | TelephonyManagerConstants.WCDMA; + return LTE | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO: - return TelephonyManagerConstants.CDMA; + return CDMA; case TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA: - return TelephonyManagerConstants.EVDO; + return EVDO; case TelephonyManagerConstants.NETWORK_MODE_GLOBAL: - return TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA - | TelephonyManagerConstants.CDMA - | TelephonyManagerConstants.EVDO; + return GSM | WCDMA | CDMA | EVDO; case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY: - return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + return RAF_TD_SCDMA; case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA: - return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.WCDMA; + return RAF_TD_SCDMA | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA: - return TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + return LTE | RAF_TD_SCDMA; case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM: - return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.GSM; + return RAF_TD_SCDMA | GSM; case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM: - return TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.GSM; + return LTE | RAF_TD_SCDMA | GSM; case TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA: - return TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return RAF_TD_SCDMA | GSM | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA: - return TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.WCDMA; + return LTE | RAF_TD_SCDMA | WCDMA; case TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA: - return TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return LTE | RAF_TD_SCDMA | GSM | 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; + return RAF_TD_SCDMA | CDMA | EVDO | GSM | 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; + return LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA; case (TelephonyManagerConstants.NETWORK_MODE_NR_ONLY): - return TelephonyManagerConstants.NR; + return NR; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE; + return NR | LTE; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManagerConstants.CDMA - | TelephonyManagerConstants.EVDO; + return NR | LTE | CDMA | EVDO; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return NR | LTE | GSM | WCDMA; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManagerConstants.CDMA - | TelephonyManagerConstants.EVDO - | TelephonyManagerConstants.GSM - | TelephonyManagerConstants.WCDMA; + return NR | LTE | CDMA | EVDO | GSM | WCDMA; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManagerConstants.WCDMA; + return NR | LTE | WCDMA; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + return NR | LTE | RAF_TD_SCDMA; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.GSM; + return NR | LTE | RAF_TD_SCDMA | GSM; case (TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA): - return TelephonyManagerConstants.NR - | TelephonyManagerConstants.LTE - | TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA - | TelephonyManagerConstants.WCDMA; + return NR | LTE | RAF_TD_SCDMA | 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; + return NR | LTE | RAF_TD_SCDMA | GSM | 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; - + return NR | LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA; default: - return TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN; + return RAF_UNKNOWN; } } + + /** + * Imported from {@link android.telephony.RadioAccessFamily} + */ + public static int getNetworkTypeFromRaf(int raf) { + raf = getAdjustedRaf(raf); + + switch (raf) { + case (GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_WCDMA_PREF; + case GSM: + return TelephonyManagerConstants.NETWORK_MODE_GSM_ONLY; + case WCDMA: + return TelephonyManagerConstants.NETWORK_MODE_WCDMA_ONLY; + case (CDMA | EVDO): + return TelephonyManagerConstants.NETWORK_MODE_CDMA_EVDO; + case (LTE | CDMA | EVDO): + return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO; + case (LTE | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA; + case (LTE | CDMA | EVDO | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA; + case LTE: + return TelephonyManagerConstants.NETWORK_MODE_LTE_ONLY; + case (LTE | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_WCDMA; + case CDMA: + return TelephonyManagerConstants.NETWORK_MODE_CDMA_NO_EVDO; + case EVDO: + return TelephonyManagerConstants.NETWORK_MODE_EVDO_NO_CDMA; + case (GSM | WCDMA | CDMA | EVDO): + return TelephonyManagerConstants.NETWORK_MODE_GLOBAL; + case RAF_TD_SCDMA: + return TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_ONLY; + case (RAF_TD_SCDMA | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_WCDMA; + case (LTE | RAF_TD_SCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA; + case (RAF_TD_SCDMA | GSM): + return TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM; + case (LTE | RAF_TD_SCDMA | GSM): + return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM; + case (RAF_TD_SCDMA | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA; + case (LTE | RAF_TD_SCDMA | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA; + case (LTE | RAF_TD_SCDMA | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA; + case (RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; + case (LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; + case (NR): + return TelephonyManagerConstants.NETWORK_MODE_NR_ONLY; + case (NR | LTE): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE; + case (NR | LTE | CDMA | EVDO): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO; + case (NR | LTE | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_GSM_WCDMA; + case (NR | LTE | CDMA | EVDO | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA; + case (NR | LTE | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_WCDMA; + case (NR | LTE | RAF_TD_SCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA; + case (NR | LTE | RAF_TD_SCDMA | GSM): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM; + case (NR | LTE | RAF_TD_SCDMA | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA; + case (NR | LTE | RAF_TD_SCDMA | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA; + case (NR | LTE | RAF_TD_SCDMA | CDMA | EVDO | GSM | WCDMA): + return TelephonyManagerConstants.NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA; + default: + return TelephonyManagerConstants.NETWORK_MODE_UNKNOWN; + } + } + + /** + * Imported from {@link android.telephony.RadioAccessFamily} + */ + private static int getAdjustedRaf(int raf) { + raf = ((GSM & raf) > 0) ? (GSM | raf) : raf; + raf = ((WCDMA & raf) > 0) ? (WCDMA | raf) : raf; + raf = ((CDMA & raf) > 0) ? (CDMA | raf) : raf; + raf = ((EVDO & raf) > 0) ? (EVDO | raf) : raf; + raf = ((LTE & raf) > 0) ? (LTE | raf) : raf; + raf = ((NR & raf) > 0) ? (NR | raf) : raf; + return raf; + } } diff --git a/src/com/android/settings/network/telephony/TelephonyConstants.java b/src/com/android/settings/network/telephony/TelephonyConstants.java index 42b57e03f20..2a2613cc497 100644 --- a/src/com/android/settings/network/telephony/TelephonyConstants.java +++ b/src/com/android/settings/network/telephony/TelephonyConstants.java @@ -32,139 +32,222 @@ public class TelephonyConstants { // Network modes are in turn copied from RILConstants // with one difference: NETWORK_MODE_CDMA is named NETWORK_MODE_CDMA_EVDO - /** GSM, WCDMA (WCDMA preferred) */ + public static final int NETWORK_MODE_UNKNOWN = -1; + + /** + * GSM, WCDMA (WCDMA preferred) + */ public static final int NETWORK_MODE_WCDMA_PREF = 0; - /** GSM only */ + /** + * GSM only + */ public static final int NETWORK_MODE_GSM_ONLY = 1; - /** WCDMA only */ + /** + * WCDMA only + */ public static final int NETWORK_MODE_WCDMA_ONLY = 2; - /** GSM, WCDMA (auto mode, according to PRL) */ + /** + * GSM, WCDMA (auto mode, according to PRL) + */ public static final int NETWORK_MODE_GSM_UMTS = 3; - /** CDMA and EvDo (auto mode, according to PRL) + /** + * CDMA and EvDo (auto mode, according to PRL) * this is NETWORK_MODE_CDMA in RILConstants.java */ public static final int NETWORK_MODE_CDMA_EVDO = 4; - /** CDMA only */ + /** + * CDMA only + */ public static final int NETWORK_MODE_CDMA_NO_EVDO = 5; - /** EvDo only */ + /** + * EvDo only + */ public static final int NETWORK_MODE_EVDO_NO_CDMA = 6; - /** GSM, WCDMA, CDMA, and EvDo (auto mode, according to PRL) */ + /** + * GSM, WCDMA, CDMA, and EvDo (auto mode, according to PRL) + */ public static final int NETWORK_MODE_GLOBAL = 7; - /** LTE, CDMA and EvDo */ + /** + * LTE, CDMA and EvDo + */ public static final int NETWORK_MODE_LTE_CDMA_EVDO = 8; - /** LTE, GSM and WCDMA */ + /** + * LTE, GSM and WCDMA + */ public static final int NETWORK_MODE_LTE_GSM_WCDMA = 9; - /** LTE, CDMA, EvDo, GSM, and WCDMA */ + /** + * LTE, CDMA, EvDo, GSM, and WCDMA + */ public static final int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10; - /** LTE only mode. */ + /** + * LTE only mode. + */ public static final int NETWORK_MODE_LTE_ONLY = 11; - /** LTE and WCDMA */ + /** + * LTE and WCDMA + */ public static final int NETWORK_MODE_LTE_WCDMA = 12; - /** TD-SCDMA only */ + /** + * TD-SCDMA only + */ public static final int NETWORK_MODE_TDSCDMA_ONLY = 13; - /** TD-SCDMA and WCDMA */ + /** + * TD-SCDMA and WCDMA + */ public static final int NETWORK_MODE_TDSCDMA_WCDMA = 14; - /** LTE and TD-SCDMA*/ + /** + * LTE and TD-SCDMA + */ public static final int NETWORK_MODE_LTE_TDSCDMA = 15; - /** TD-SCDMA and GSM */ + /** + * TD-SCDMA and GSM + */ public static final int NETWORK_MODE_TDSCDMA_GSM = 16; - /** TD-SCDMA, GSM and LTE */ + /** + * TD-SCDMA, GSM and LTE + */ public static final int NETWORK_MODE_LTE_TDSCDMA_GSM = 17; - /** TD-SCDMA, GSM and WCDMA */ + /** + * TD-SCDMA, GSM and WCDMA + */ public static final int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18; - /** LTE, TD-SCDMA and WCDMA */ + /** + * LTE, TD-SCDMA and WCDMA + */ public static final int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19; - /** LTE, TD-SCDMA, GSM, and WCDMA */ + /** + * LTE, TD-SCDMA, GSM, and WCDMA + */ public static final int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20; - /** TD-SCDMA, CDMA, EVDO, GSM and WCDMA */ + /** + * TD-SCDMA, CDMA, EVDO, GSM and WCDMA + */ public static final int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21; - /** LTE, TDCSDMA, CDMA, EVDO, GSM and WCDMA */ + /** + * LTE, TDCSDMA, CDMA, EVDO, GSM and WCDMA + */ public static final int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22; - /** NR 5G only mode */ + /** + * NR 5G only mode + */ public static final int NETWORK_MODE_NR_ONLY = 23; - /** NR 5G, LTE */ + /** + * NR 5G, LTE + */ public static final int NETWORK_MODE_NR_LTE = 24; - /** NR 5G, LTE, CDMA and EvDo */ + /** + * NR 5G, LTE, CDMA and EvDo + */ public static final int NETWORK_MODE_NR_LTE_CDMA_EVDO = 25; - /** NR 5G, LTE, GSM and WCDMA */ + /** + * NR 5G, LTE, GSM and WCDMA + */ public static final int NETWORK_MODE_NR_LTE_GSM_WCDMA = 26; - /** NR 5G, LTE, CDMA, EvDo, GSM and WCDMA */ + /** + * NR 5G, LTE, CDMA, EvDo, GSM and WCDMA + */ public static final int NETWORK_MODE_NR_LTE_CDMA_EVDO_GSM_WCDMA = 27; - /** NR 5G, LTE and WCDMA */ + /** + * NR 5G, LTE and WCDMA + */ public static final int NETWORK_MODE_NR_LTE_WCDMA = 28; - /** NR 5G, LTE and TDSCDMA */ + /** + * NR 5G, LTE and TDSCDMA + */ public static final int NETWORK_MODE_NR_LTE_TDSCDMA = 29; - /** NR 5G, LTE, TD-SCDMA and GSM */ + /** + * NR 5G, LTE, TD-SCDMA and GSM + */ public static final int NETWORK_MODE_NR_LTE_TDSCDMA_GSM = 30; - /** NR 5G, LTE, TD-SCDMA, WCDMA */ + /** + * NR 5G, LTE, TD-SCDMA, WCDMA + */ public static final int NETWORK_MODE_NR_LTE_TDSCDMA_WCDMA = 31; - /** NR 5G, LTE, TD-SCDMA, GSM and WCDMA */ + /** + * NR 5G, LTE, TD-SCDMA, GSM and WCDMA + */ public static final int NETWORK_MODE_NR_LTE_TDSCDMA_GSM_WCDMA = 32; - /** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */ + /** + * 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; - } + /** + * Copied from {@link android.telephony.RadioAccessFamily} + */ + public static class RadioAccessFamily { + // 2G + public static final int RAF_UNKNOWN = (int) TelephonyManager.NETWORK_TYPE_BITMASK_UNKNOWN; + public static final int RAF_GSM = (int) TelephonyManager.NETWORK_TYPE_BITMASK_GSM; + public static final int RAF_GPRS = (int) TelephonyManager.NETWORK_TYPE_BITMASK_GPRS; + public static final int RAF_EDGE = (int) TelephonyManager.NETWORK_TYPE_BITMASK_EDGE; + public static final int RAF_IS95A = (int) TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; + public static final int RAF_IS95B = (int) TelephonyManager.NETWORK_TYPE_BITMASK_CDMA; + public static final int RAF_1xRTT = (int) TelephonyManager.NETWORK_TYPE_BITMASK_1xRTT; + // 3G + public static final int RAF_EVDO_0 = (int) TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_0; + public static final int RAF_EVDO_A = (int) TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_A; + public static final int RAF_EVDO_B = (int) TelephonyManager.NETWORK_TYPE_BITMASK_EVDO_B; + public static final int RAF_EHRPD = (int) TelephonyManager.NETWORK_TYPE_BITMASK_EHRPD; + public static final int RAF_HSUPA = (int) TelephonyManager.NETWORK_TYPE_BITMASK_HSUPA; + public static final int RAF_HSDPA = (int) TelephonyManager.NETWORK_TYPE_BITMASK_HSDPA; + public static final int RAF_HSPA = (int) TelephonyManager.NETWORK_TYPE_BITMASK_HSPA; + public static final int RAF_HSPAP = (int) TelephonyManager.NETWORK_TYPE_BITMASK_HSPAP; + public static final int RAF_UMTS = (int) TelephonyManager.NETWORK_TYPE_BITMASK_UMTS; + public static final int RAF_TD_SCDMA = (int) TelephonyManager.NETWORK_TYPE_BITMASK_TD_SCDMA; + // 4G + public static final int RAF_LTE = (int) TelephonyManager.NETWORK_TYPE_BITMASK_LTE; + public static final int RAF_LTE_CA = (int) TelephonyManager.NETWORK_TYPE_BITMASK_LTE_CA; + // 5G + public static final int RAF_NR = (int) TelephonyManager.NETWORK_TYPE_BITMASK_NR; + // Grouping of RAFs + // 2G + public static final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE; + public static final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT; + // 3G + public static final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B | RAF_EHRPD; + public static final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP; + public static final int WCDMA = HS | RAF_UMTS; + // 4G + public static final int LTE = RAF_LTE | RAF_LTE_CA; + + // 5G + public static final int NR = RAF_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 d12d5432cea..2f3aeccb883 100644 --- a/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceControllerTest.java @@ -153,8 +153,9 @@ public class EnabledNetworkModePreferenceControllerTest { public void init_initDisplay5gList_returnTrue() { long testBitmask = TelephonyManager.NETWORK_TYPE_BITMASK_NR | TelephonyManager.NETWORK_TYPE_BITMASK_LTE; + long allowedNetworkTypes = -1; doReturn(testBitmask).when(mTelephonyManager).getSupportedRadioAccessFamily(); - + doReturn(allowedNetworkTypes).when(mTelephonyManager).getAllowedNetworkTypes(); mController.init(mLifecycle, SUB_ID); assertThat(mController.mDisplay5gList).isTrue(); @@ -171,6 +172,8 @@ public class EnabledNetworkModePreferenceControllerTest { @Test public void updateState_updateByNetworkMode() { + long allowedNetworkTypes = -1; + doReturn(allowedNetworkTypes).when(mTelephonyManager).getAllowedNetworkTypes(); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, TelephonyManagerConstants.NETWORK_MODE_TDSCDMA_GSM_WCDMA); @@ -184,6 +187,8 @@ public class EnabledNetworkModePreferenceControllerTest { @Test public void updateState_updateByNetworkMode_useDefaultValue() { + long allowedNetworkTypes = -1; + doReturn(allowedNetworkTypes).when(mTelephonyManager).getAllowedNetworkTypes(); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA); @@ -399,9 +404,8 @@ public class EnabledNetworkModePreferenceControllerTest { mController.onPreferenceChange(mPreference, String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); - assertThat(Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isEqualTo( - TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA); + assertThat(mPreference.getValue()).isEqualTo( + String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); } @Test @@ -412,14 +416,15 @@ public class EnabledNetworkModePreferenceControllerTest { mController.onPreferenceChange(mPreference, String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); - assertThat(Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID, 0)).isNotEqualTo( - TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA); + assertThat(mPreference.getValue()).isNotEqualTo( + String.valueOf(TelephonyManagerConstants.NETWORK_MODE_LTE_GSM_WCDMA)); } @Test public void preferredNetworkModeNotification_preferenceUpdates() { PreferenceScreen screen = mock(PreferenceScreen.class); + long allowedNetworkTypes = -1; + doReturn(allowedNetworkTypes).when(mTelephonyManager).getAllowedNetworkTypes(); doReturn(mPreference).when(screen).findPreference(KEY); Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + SUB_ID,