Loading src/com/android/settings/network/PreferredNetworkModeContentObserver.java→src/com/android/settings/network/AllowedNetworkTypesListener.java +93 −0 Original line number Diff line number Diff line Loading @@ -17,50 +17,77 @@ package com.android.settings.network; import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import androidx.annotation.VisibleForTesting; import java.util.Map; import java.util.concurrent.Executor; /** * {@link ContentObserver} to listen to Preferred Network Mode change * {@link PhoneStateListener} to listen to Allowed Network Types changed */ public class PreferredNetworkModeContentObserver extends ContentObserver { public class AllowedNetworkTypesListener extends PhoneStateListener implements PhoneStateListener.AllowedNetworkTypesChangedListener { private static final String LOG_TAG = "NetworkModeListener"; @VisibleForTesting OnPreferredNetworkModeChangedListener mListener; AllowedNetworkTypesListener.OnAllowedNetworkTypesChangedListener mListener; private long mAllowedNetworkType = -1; private Executor mExecutor; public PreferredNetworkModeContentObserver(Handler handler) { super(handler); public AllowedNetworkTypesListener(Executor executor) { super(); mExecutor = executor; } public void setPreferredNetworkModeChangedListener(OnPreferredNetworkModeChangedListener lsn) { public void setAllowedNetworkTypesChangedListener(OnAllowedNetworkTypesChangedListener lsn) { mListener = lsn; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mListener != null) { mListener.onPreferredNetworkModeChanged(); } /** * Register a PhoneStateListener for Allowed Network Types changed. * @param context the Context * @param subId the subscription id. */ public void register(Context context, int subId) { TelephonyManager telephonyManager = context.getSystemService( TelephonyManager.class).createForSubscriptionId(subId); telephonyManager.registerPhoneStateListener(mExecutor, this); } public void register(Context context, int subId) { final Uri uri = Settings.Global.getUriFor( Settings.Global.PREFERRED_NETWORK_MODE + subId); context.getContentResolver().registerContentObserver(uri, false, this); /** * Unregister a PhoneStateListener for Allowed Network Types changed. * @param context the Context * @param subId the subscription id. */ public void unregister(Context context, int subId) { TelephonyManager telephonyManager = context.getSystemService( TelephonyManager.class).createForSubscriptionId(subId); telephonyManager.unregisterPhoneStateListener(this); } public void unregister(Context context) { context.getContentResolver().unregisterContentObserver(this); @Override public void onAllowedNetworkTypesChanged(Map<Integer, Long> allowedNetworkTypesList) { long newAllowedNetworkType = allowedNetworkTypesList.get( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER); if (mListener != null && mAllowedNetworkType != newAllowedNetworkType) { mListener.onAllowedNetworkTypesChanged(); Log.d(LOG_TAG, "onAllowedNetworkChanged: " + mAllowedNetworkType); } mAllowedNetworkType = newAllowedNetworkType; } /** * Listener for update of Preferred Network Mode change */ public interface OnPreferredNetworkModeChangedListener { void onPreferredNetworkModeChanged(); public interface OnAllowedNetworkTypesChangedListener { /** * Notify the allowed network type changed. */ void onAllowedNetworkTypesChanged(); } } src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +19 −23 Original line number Diff line number Diff line Loading @@ -20,10 +20,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.PersistableBundle; import android.provider.Settings; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; Loading @@ -37,7 +34,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; Loading @@ -53,7 +50,7 @@ public class EnabledNetworkModePreferenceController extends ListPreference.OnPreferenceChangeListener, LifecycleObserver { private static final String LOG_TAG = "EnabledNetworkMode"; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; private AllowedNetworkTypesListener mAllowedNetworkTypesListener; private Preference mPreference; private PreferenceScreen mPreferenceScreen; private TelephonyManager mTelephonyManager; Loading Loading @@ -88,18 +85,18 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { if (mPreferredNetworkModeObserver == null) { if (mAllowedNetworkTypesListener == null) { return; } mPreferredNetworkModeObserver.register(mContext, mSubId); mAllowedNetworkTypesListener.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { if (mPreferredNetworkModeObserver == null) { if (mAllowedNetworkTypesListener == null) { return; } mPreferredNetworkModeObserver.unregister(mContext); mAllowedNetworkTypesListener.unregister(mContext, mSubId); } @Override Loading Loading @@ -145,10 +142,10 @@ public class EnabledNetworkModePreferenceController extends mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); if (mPreferredNetworkModeObserver == null) { mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( if (mAllowedNetworkTypesListener == null) { mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mContext.getMainExecutor()); mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( () -> updatePreference()); } Loading Loading @@ -205,13 +202,12 @@ public class EnabledNetworkModePreferenceController extends .createForSubscriptionId(mSubId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); final boolean isNrEnabledFromCarrierConfig = carrierConfig != null && carrierConfig.getBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL); mAllowed5gNetworkType = checkSupportedRadioBitmask( mTelephonyManager.getAllowedNetworkTypes(), mTelephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_CARRIER), TelephonyManager.NETWORK_TYPE_BITMASK_NR); mSupported5gRadioAccessFamily = isNrEnabledFromCarrierConfig && checkSupportedRadioBitmask(mTelephonyManager.getSupportedRadioAccessFamily(), mSupported5gRadioAccessFamily = checkSupportedRadioBitmask( mTelephonyManager.getSupportedRadioAccessFamily(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); mIsGlobalCdma = mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled() && carrierConfig != null Loading Loading @@ -370,9 +366,9 @@ public class EnabledNetworkModePreferenceController extends } private int getPreferredNetworkMode() { int networkMode = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + mSubId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); int networkMode = MobileNetworkUtils.getNetworkTypeFromRaf( (int) mTelephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (!showNrList()) { Log.d(LOG_TAG, "Network mode :" + networkMode + " reduce NR"); networkMode = reduceNrToLteNetworkType(networkMode); Loading src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +3 −2 Original line number Diff line number Diff line Loading @@ -95,8 +95,9 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc mShow5gLimitedDialog = carrierConfig.getBoolean( CarrierConfigManager.KEY_VOLTE_5G_LIMITED_ALERT_DIALOG_BOOL); mIsNrEnabledFromCarrierConfig = carrierConfig.getBoolean( CarrierConfigManager.KEY_NR_ENABLED_BOOL); mIsNrEnabledFromCarrierConfig = carrierConfig.getInt( CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITY_INT) != CarrierConfigManager.CARRIER_NR_AVAILABILITY_NONE; return this; } Loading src/com/android/settings/network/telephony/MobileNetworkUtils.java +19 −17 Original line number Diff line number Diff line Loading @@ -339,10 +339,10 @@ public class MobileNetworkUtils { } if (isWorldMode(context, subId)) { final int settingsNetworkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final int settingsNetworkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (settingsNetworkMode == NETWORK_MODE_LTE_GSM_WCDMA || settingsNetworkMode == NETWORK_MODE_LTE_CDMA_EVDO || settingsNetworkMode == NETWORK_MODE_NR_LTE_GSM_WCDMA Loading @@ -368,10 +368,11 @@ public class MobileNetworkUtils { if (isGsmBasicOptions(context, subId)) { return true; } final int networkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(subId); final int networkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (isWorldMode(context, subId)) { if (networkMode == NETWORK_MODE_LTE_CDMA_EVDO || networkMode == NETWORK_MODE_LTE_GSM_WCDMA Loading Loading @@ -435,10 +436,9 @@ public class MobileNetworkUtils { return false; } final int networkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final int networkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO && isWorldMode(context, subId)) { return false; Loading Loading @@ -550,15 +550,17 @@ public class MobileNetworkUtils { */ @VisibleForTesting static boolean shouldSpeciallyUpdateGsmCdma(Context context, int subId) { final int networkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(subId); final int networkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) { if (!isTdscdmaSupported(context, subId) && isWorldMode(context, subId)) { return true; Loading src/com/android/settings/network/telephony/NetworkPreferenceCategoryController.java +7 −9 Original line number Diff line number Diff line Loading @@ -20,8 +20,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.telephony.SubscriptionManager; import androidx.lifecycle.Lifecycle; Loading @@ -29,7 +27,7 @@ import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.widget.PreferenceCategoryController; /** Loading @@ -39,15 +37,15 @@ public class NetworkPreferenceCategoryController extends PreferenceCategoryContr implements LifecycleObserver { private PreferenceScreen mPreferenceScreen; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; private AllowedNetworkTypesListener mAllowedNetworkTypesListener; protected int mSubId; public NetworkPreferenceCategoryController(Context context, String key) { super(context, key); mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( context.getMainExecutor()); mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( () -> updatePreference()); } Loading @@ -57,12 +55,12 @@ public class NetworkPreferenceCategoryController extends PreferenceCategoryContr @OnLifecycleEvent(ON_START) public void onStart() { mPreferredNetworkModeObserver.register(mContext, mSubId); mAllowedNetworkTypesListener.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { mPreferredNetworkModeObserver.unregister(mContext); mAllowedNetworkTypesListener.unregister(mContext, mSubId); } @Override Loading Loading
src/com/android/settings/network/PreferredNetworkModeContentObserver.java→src/com/android/settings/network/AllowedNetworkTypesListener.java +93 −0 Original line number Diff line number Diff line Loading @@ -17,50 +17,77 @@ package com.android.settings.network; import android.content.Context; import android.database.ContentObserver; import android.net.Uri; import android.os.Handler; import android.provider.Settings; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log; import androidx.annotation.VisibleForTesting; import java.util.Map; import java.util.concurrent.Executor; /** * {@link ContentObserver} to listen to Preferred Network Mode change * {@link PhoneStateListener} to listen to Allowed Network Types changed */ public class PreferredNetworkModeContentObserver extends ContentObserver { public class AllowedNetworkTypesListener extends PhoneStateListener implements PhoneStateListener.AllowedNetworkTypesChangedListener { private static final String LOG_TAG = "NetworkModeListener"; @VisibleForTesting OnPreferredNetworkModeChangedListener mListener; AllowedNetworkTypesListener.OnAllowedNetworkTypesChangedListener mListener; private long mAllowedNetworkType = -1; private Executor mExecutor; public PreferredNetworkModeContentObserver(Handler handler) { super(handler); public AllowedNetworkTypesListener(Executor executor) { super(); mExecutor = executor; } public void setPreferredNetworkModeChangedListener(OnPreferredNetworkModeChangedListener lsn) { public void setAllowedNetworkTypesChangedListener(OnAllowedNetworkTypesChangedListener lsn) { mListener = lsn; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); if (mListener != null) { mListener.onPreferredNetworkModeChanged(); } /** * Register a PhoneStateListener for Allowed Network Types changed. * @param context the Context * @param subId the subscription id. */ public void register(Context context, int subId) { TelephonyManager telephonyManager = context.getSystemService( TelephonyManager.class).createForSubscriptionId(subId); telephonyManager.registerPhoneStateListener(mExecutor, this); } public void register(Context context, int subId) { final Uri uri = Settings.Global.getUriFor( Settings.Global.PREFERRED_NETWORK_MODE + subId); context.getContentResolver().registerContentObserver(uri, false, this); /** * Unregister a PhoneStateListener for Allowed Network Types changed. * @param context the Context * @param subId the subscription id. */ public void unregister(Context context, int subId) { TelephonyManager telephonyManager = context.getSystemService( TelephonyManager.class).createForSubscriptionId(subId); telephonyManager.unregisterPhoneStateListener(this); } public void unregister(Context context) { context.getContentResolver().unregisterContentObserver(this); @Override public void onAllowedNetworkTypesChanged(Map<Integer, Long> allowedNetworkTypesList) { long newAllowedNetworkType = allowedNetworkTypesList.get( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER); if (mListener != null && mAllowedNetworkType != newAllowedNetworkType) { mListener.onAllowedNetworkTypesChanged(); Log.d(LOG_TAG, "onAllowedNetworkChanged: " + mAllowedNetworkType); } mAllowedNetworkType = newAllowedNetworkType; } /** * Listener for update of Preferred Network Mode change */ public interface OnPreferredNetworkModeChangedListener { void onPreferredNetworkModeChanged(); public interface OnAllowedNetworkTypesChangedListener { /** * Notify the allowed network type changed. */ void onAllowedNetworkTypesChanged(); } }
src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +19 −23 Original line number Diff line number Diff line Loading @@ -20,10 +20,7 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.os.PersistableBundle; import android.provider.Settings; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; Loading @@ -37,7 +34,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.TelephonyConstants.TelephonyManagerConstants; import java.util.ArrayList; Loading @@ -53,7 +50,7 @@ public class EnabledNetworkModePreferenceController extends ListPreference.OnPreferenceChangeListener, LifecycleObserver { private static final String LOG_TAG = "EnabledNetworkMode"; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; private AllowedNetworkTypesListener mAllowedNetworkTypesListener; private Preference mPreference; private PreferenceScreen mPreferenceScreen; private TelephonyManager mTelephonyManager; Loading Loading @@ -88,18 +85,18 @@ public class EnabledNetworkModePreferenceController extends @OnLifecycleEvent(ON_START) public void onStart() { if (mPreferredNetworkModeObserver == null) { if (mAllowedNetworkTypesListener == null) { return; } mPreferredNetworkModeObserver.register(mContext, mSubId); mAllowedNetworkTypesListener.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { if (mPreferredNetworkModeObserver == null) { if (mAllowedNetworkTypesListener == null) { return; } mPreferredNetworkModeObserver.unregister(mContext); mAllowedNetworkTypesListener.unregister(mContext, mSubId); } @Override Loading Loading @@ -145,10 +142,10 @@ public class EnabledNetworkModePreferenceController extends mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); mBuilder = new PreferenceEntriesBuilder(mContext, mSubId); if (mPreferredNetworkModeObserver == null) { mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( if (mAllowedNetworkTypesListener == null) { mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mContext.getMainExecutor()); mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( () -> updatePreference()); } Loading Loading @@ -205,13 +202,12 @@ public class EnabledNetworkModePreferenceController extends .createForSubscriptionId(mSubId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); final boolean isNrEnabledFromCarrierConfig = carrierConfig != null && carrierConfig.getBoolean(CarrierConfigManager.KEY_NR_ENABLED_BOOL); mAllowed5gNetworkType = checkSupportedRadioBitmask( mTelephonyManager.getAllowedNetworkTypes(), mTelephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_CARRIER), TelephonyManager.NETWORK_TYPE_BITMASK_NR); mSupported5gRadioAccessFamily = isNrEnabledFromCarrierConfig && checkSupportedRadioBitmask(mTelephonyManager.getSupportedRadioAccessFamily(), mSupported5gRadioAccessFamily = checkSupportedRadioBitmask( mTelephonyManager.getSupportedRadioAccessFamily(), TelephonyManager.NETWORK_TYPE_BITMASK_NR); mIsGlobalCdma = mTelephonyManager.isLteCdmaEvdoGsmWcdmaEnabled() && carrierConfig != null Loading Loading @@ -370,9 +366,9 @@ public class EnabledNetworkModePreferenceController extends } private int getPreferredNetworkMode() { int networkMode = Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.PREFERRED_NETWORK_MODE + mSubId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); int networkMode = MobileNetworkUtils.getNetworkTypeFromRaf( (int) mTelephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (!showNrList()) { Log.d(LOG_TAG, "Network mode :" + networkMode + " reduce NR"); networkMode = reduceNrToLteNetworkType(networkMode); Loading
src/com/android/settings/network/telephony/Enhanced4gBasePreferenceController.java +3 −2 Original line number Diff line number Diff line Loading @@ -95,8 +95,9 @@ public class Enhanced4gBasePreferenceController extends TelephonyTogglePreferenc mShow5gLimitedDialog = carrierConfig.getBoolean( CarrierConfigManager.KEY_VOLTE_5G_LIMITED_ALERT_DIALOG_BOOL); mIsNrEnabledFromCarrierConfig = carrierConfig.getBoolean( CarrierConfigManager.KEY_NR_ENABLED_BOOL); mIsNrEnabledFromCarrierConfig = carrierConfig.getInt( CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITY_INT) != CarrierConfigManager.CARRIER_NR_AVAILABILITY_NONE; return this; } Loading
src/com/android/settings/network/telephony/MobileNetworkUtils.java +19 −17 Original line number Diff line number Diff line Loading @@ -339,10 +339,10 @@ public class MobileNetworkUtils { } if (isWorldMode(context, subId)) { final int settingsNetworkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final int settingsNetworkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (settingsNetworkMode == NETWORK_MODE_LTE_GSM_WCDMA || settingsNetworkMode == NETWORK_MODE_LTE_CDMA_EVDO || settingsNetworkMode == NETWORK_MODE_NR_LTE_GSM_WCDMA Loading @@ -368,10 +368,11 @@ public class MobileNetworkUtils { if (isGsmBasicOptions(context, subId)) { return true; } final int networkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(subId); final int networkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (isWorldMode(context, subId)) { if (networkMode == NETWORK_MODE_LTE_CDMA_EVDO || networkMode == NETWORK_MODE_LTE_GSM_WCDMA Loading Loading @@ -435,10 +436,9 @@ public class MobileNetworkUtils { return false; } final int networkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final int networkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO && isWorldMode(context, subId)) { return false; Loading Loading @@ -550,15 +550,17 @@ public class MobileNetworkUtils { */ @VisibleForTesting static boolean shouldSpeciallyUpdateGsmCdma(Context context, int subId) { final int networkMode = android.provider.Settings.Global.getInt( context.getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE + subId, TelephonyManager.DEFAULT_PREFERRED_NETWORK_MODE); final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class) .createForSubscriptionId(subId); final int networkMode = getNetworkTypeFromRaf( (int) telephonyManager.getAllowedNetworkTypesForReason( TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER)); if (networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA || networkMode == TelephonyManagerConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA) { if (!isTdscdmaSupported(context, subId) && isWorldMode(context, subId)) { return true; Loading
src/com/android/settings/network/telephony/NetworkPreferenceCategoryController.java +7 −9 Original line number Diff line number Diff line Loading @@ -20,8 +20,6 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.content.Context; import android.os.Handler; import android.os.Looper; import android.telephony.SubscriptionManager; import androidx.lifecycle.Lifecycle; Loading @@ -29,7 +27,7 @@ import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; import androidx.preference.PreferenceScreen; import com.android.settings.network.PreferredNetworkModeContentObserver; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.widget.PreferenceCategoryController; /** Loading @@ -39,15 +37,15 @@ public class NetworkPreferenceCategoryController extends PreferenceCategoryContr implements LifecycleObserver { private PreferenceScreen mPreferenceScreen; private PreferredNetworkModeContentObserver mPreferredNetworkModeObserver; private AllowedNetworkTypesListener mAllowedNetworkTypesListener; protected int mSubId; public NetworkPreferenceCategoryController(Context context, String key) { super(context, key); mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; mPreferredNetworkModeObserver = new PreferredNetworkModeContentObserver( new Handler(Looper.getMainLooper())); mPreferredNetworkModeObserver.setPreferredNetworkModeChangedListener( mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( context.getMainExecutor()); mAllowedNetworkTypesListener.setAllowedNetworkTypesChangedListener( () -> updatePreference()); } Loading @@ -57,12 +55,12 @@ public class NetworkPreferenceCategoryController extends PreferenceCategoryContr @OnLifecycleEvent(ON_START) public void onStart() { mPreferredNetworkModeObserver.register(mContext, mSubId); mAllowedNetworkTypesListener.register(mContext, mSubId); } @OnLifecycleEvent(ON_STOP) public void onStop() { mPreferredNetworkModeObserver.unregister(mContext); mAllowedNetworkTypesListener.unregister(mContext, mSubId); } @Override Loading