diff --git a/src/com/android/settings/network/AllowedNetworkTypesListener.java b/src/com/android/settings/network/AllowedNetworkTypesListener.java index 972e4d6aacf..3d936646059 100644 --- a/src/com/android/settings/network/AllowedNetworkTypesListener.java +++ b/src/com/android/settings/network/AllowedNetworkTypesListener.java @@ -34,7 +34,6 @@ public class AllowedNetworkTypesListener extends TelephonyCallback implements @VisibleForTesting OnAllowedNetworkTypesListener mListener; - private long mAllowedNetworkType = -1; private Executor mExecutor; public AllowedNetworkTypesListener(Executor executor) { @@ -70,14 +69,14 @@ public class AllowedNetworkTypesListener extends TelephonyCallback implements @Override public void onAllowedNetworkTypesChanged(int reason, long newAllowedNetworkType) { - if (reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER) { + if (reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_USER + && reason != TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_CARRIER) { return; } - if (mListener != null && mAllowedNetworkType != newAllowedNetworkType) { + if (mListener != null) { mListener.onAllowedNetworkTypesChanged(); - Log.d(LOG_TAG, "onAllowedNetworkChanged: " + mAllowedNetworkType); + Log.d(LOG_TAG, "onAllowedNetworkChanged: " + newAllowedNetworkType); } - mAllowedNetworkType = newAllowedNetworkType; } /** diff --git a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java index d39f6a4200c..25e0ae0765b 100644 --- a/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java +++ b/src/com/android/settings/network/telephony/EnabledNetworkModePreferenceController.java @@ -152,7 +152,10 @@ public class EnabledNetworkModePreferenceController extends mAllowedNetworkTypesListener = new AllowedNetworkTypesListener( mContext.getMainExecutor()); mAllowedNetworkTypesListener.setAllowedNetworkTypesListener( - () -> updatePreference()); + () -> { + mBuilder.updateConfig(); + updatePreference(); + }); } lifecycle.addObserver(this); diff --git a/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java b/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java index e89a2575d30..c18477ab078 100644 --- a/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java +++ b/tests/unit/src/com/android/settings/network/AllowedNetworkTypesListenerTest.java @@ -68,7 +68,7 @@ public class AllowedNetworkTypesListenerTest { } @Test - public void onChange_shouldCallListener() { + public void onChange_userReasonChanged_shouldCallListener() { mAllowedNetworkTypesListener.mListener = mListener; long networkType = (long) RadioAccessFamily.getRafFromNetworkType( TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO); @@ -79,6 +79,18 @@ public class AllowedNetworkTypesListenerTest { verify(mListener).onAllowedNetworkTypesChanged(); } + @Test + public void onChange_carrierReasonChanged_shouldCallListener() { + mAllowedNetworkTypesListener.mListener = mListener; + long networkType = (long) RadioAccessFamily.getRafFromNetworkType( + TelephonyManager.NETWORK_MODE_LTE_CDMA_EVDO); + + mAllowedNetworkTypesListener.onAllowedNetworkTypesChanged( + TelephonyManager.ALLOWED_NETWORK_TYPES_REASON_CARRIER, networkType); + + verify(mListener).onAllowedNetworkTypesChanged(); + } + @Test public void register_shouldRegisterContentObserver() { mAllowedNetworkTypesListener.register(mContext, SUB_ID);