Merge "Replaced reference to setPreferredNetworkType"

This commit is contained in:
Lee Chou
2020-01-10 14:50:47 +00:00
committed by Android (Google) Code Review
6 changed files with 197 additions and 19 deletions

View File

@@ -82,8 +82,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) {
@@ -131,13 +129,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;
}

View File

@@ -652,4 +652,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;
}
}
}

View File

@@ -50,8 +50,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;
@@ -82,12 +80,13 @@ 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);
return true;
}

View File

@@ -17,6 +17,8 @@
package com.android.settings.network.telephony;
import android.telephony.TelephonyManager;
/**
* Contains hidden constants copied from the platform.
*/
@@ -133,6 +135,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;
}

View File

@@ -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));

View File

@@ -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));