Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4fd08a21 authored by Lee Chou's avatar Lee Chou Committed by Bonian Chen
Browse files

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
parent 64c40305
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -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;
        }

+147 −0
Original line number Diff line number Diff line
@@ -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;
        }
    }
}
+5 −6
Original line number Diff line number Diff line
@@ -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;
        }

+31 −0
Original line number Diff line number Diff line
@@ -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;

    }

    /**
+5 −4
Original line number Diff line number Diff line
@@ -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));
Loading