From 4fd08a214517389b2d6bf5cc4994983be3efaadc Mon Sep 17 00:00:00 2001 From: Lee Chou Date: Fri, 10 Jan 2020 16:42:20 +0800 Subject: [PATCH] Replaced reference to setPreferredNetworkType replaced with @SystemApi setPreferredNetworkTypeBitmask Bug: 147405973 Test: make RunSettingsRoboTests ROBOTEST_FILTER=EnabledNetworkModePreferenceControllerTest make RunSettingsRoboTests ROBOTEST_FILTER=PreferredNetworkModePreferenceControllerTest Merged-In: I8ae86595b104dcd16daacbf52cc8eaa5e7a3d08b Change-Id: Ia66cfc8fe109cfc038a8b53969bcd562727dbbc2 --- ...nabledNetworkModePreferenceController.java | 11 +- .../network/telephony/MobileNetworkUtils.java | 147 ++++++++++++++++++ ...ferredNetworkModePreferenceController.java | 11 +- .../network/telephony/TelephonyConstants.java | 31 ++++ ...edNetworkModePreferenceControllerTest.java | 9 +- ...edNetworkModePreferenceControllerTest.java | 9 +- 6 files changed, 198 insertions(+), 20 deletions(-) diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index 78283df4998..c8e09b9f389 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -81,8 +81,6 @@ public class EnabledNetworkModePreferenceController extends 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 @@ public class EnabledNetworkModePreferenceController extends @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 118e4d528c8..d3784ae5c14 100644 --- a/src/com/android/settings/network/telephony/MobileNetworkUtils.java +++ b/src/com/android/settings/network/telephony/MobileNetworkUtils.java @@ -760,4 +760,151 @@ public class MobileNetworkUtils { } 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 12680248372..b01852dfdbc 100644 --- a/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/PreferredNetworkModePreferenceController.java @@ -49,8 +49,6 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe @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 @@ public class PreferredNetworkModePreferenceController extends TelephonyBasePrefe @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 78a177edccc..8751cc2ac8b 100644 --- a/src/com/android/settings/network/telephony/TelephonyConstants.java +++ b/src/com/android/settings/network/telephony/TelephonyConstants.java @@ -18,6 +18,8 @@ package com.android.settings.network.telephony; import android.telephony.TelephonyManager; +import android.telephony.TelephonyManager; + /** * Contains hidden constants copied from the platform. */ @@ -203,6 +205,35 @@ public class TelephonyConstants { * 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 ea96e29f0c6..d12d5432cea 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 androidx.lifecycle.Lifecycle.Event.ON_START; 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 @@ public class EnabledNetworkModePreferenceControllerTest { @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 @@ public class EnabledNetworkModePreferenceControllerTest { @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 0d50e9e58c5..1feb08b35d2 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 @@ package com.android.settings.network.telephony; 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 @@ public class PreferredNetworkModePreferenceControllerTest { @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 @@ public class PreferredNetworkModePreferenceControllerTest { @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));