From 0ab776f69ddec4e743fdcf09baa9c3fefc7db8b6 Mon Sep 17 00:00:00 2001 From: Pengquan Meng Date: Tue, 7 May 2019 14:39:45 -0700 Subject: [PATCH] Fixed network name for about/sim_status The network name in sim status dialog is not the same as the one in the about page. This CL use the carrier text which is resolved in ServiceStateTracker as the network name, this keep the network name sync with the status bar and the summary of sim status in the about page. Bug: 31784938 Test: build & manual test Change-Id: Ia741baabaa98ae447dbedf9e28fd2fda222e6d2e --- .../simstatus/SimStatusDialogController.java | 39 +++++++++++++++------- .../simstatus/SimStatusDialogControllerTest.java | 9 +++-- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 95f913eda5..c18ec787b9 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -19,6 +19,7 @@ package com.android.settings.deviceinfo.simstatus; import static android.content.Context.CARRIER_CONFIG_SERVICE; import static android.content.Context.EUICC_SERVICE; import static android.content.Context.TELEPHONY_SERVICE; +import static android.content.Context.TELEPHONY_SUBSCRIPTION_SERVICE; import android.Manifest; import android.content.BroadcastReceiver; @@ -36,6 +37,7 @@ import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionManager; +import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener; import android.telephony.TelephonyManager; import android.telephony.euicc.EuiccManager; import android.text.BidiFormatter; @@ -53,8 +55,6 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnPause; import com.android.settingslib.core.lifecycle.events.OnResume; -import java.util.List; - public class SimStatusDialogController implements LifecycleObserver, OnResume, OnPause { private final static String TAG = "SimStatusDialogCtrl"; @@ -98,9 +98,21 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O "com.android.cellbroadcastreceiver.GET_LATEST_CB_AREA_INFO"; private final static String CELL_BROADCAST_RECEIVER_APP = "com.android.cellbroadcastreceiver"; + private final OnSubscriptionsChangedListener mOnSubscriptionsChangedListener = + new OnSubscriptionsChangedListener() { + @Override + public void onSubscriptionsChanged() { + mSubscriptionInfo = mSubscriptionManager.getActiveSubscriptionInfo( + mSubscriptionInfo.getSubscriptionId()); + updateNetworkProvider(); + } + }; + + private SubscriptionInfo mSubscriptionInfo; + private final SimStatusDialogFragment mDialog; - private final SubscriptionInfo mSubscriptionInfo; private final TelephonyManager mTelephonyManager; + private final SubscriptionManager mSubscriptionManager; private final CarrierConfigManager mCarrierConfigManager; private final EuiccManager mEuiccManager; private final Resources mRes; @@ -134,11 +146,10 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O mDialog = dialog; mContext = dialog.getContext(); mSubscriptionInfo = getPhoneSubscriptionInfo(slotId); - mTelephonyManager = (TelephonyManager) mContext.getSystemService( - TELEPHONY_SERVICE); - mCarrierConfigManager = (CarrierConfigManager) mContext.getSystemService( - CARRIER_CONFIG_SERVICE); - mEuiccManager = (EuiccManager) mContext.getSystemService(EUICC_SERVICE); + mTelephonyManager = mContext.getSystemService(TelephonyManager.class); + mCarrierConfigManager = mContext.getSystemService(CarrierConfigManager.class); + mEuiccManager = mContext.getSystemService(EuiccManager.class); + mSubscriptionManager = mContext.getSystemService(SubscriptionManager.class); mRes = mContext.getResources(); @@ -155,9 +166,9 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } mPhoneStateListener = getPhoneStateListener(); + updateNetworkProvider(); final ServiceState serviceState = getCurrentServiceState(); - updateNetworkProvider(serviceState); updatePhoneNumber(); updateLatestAreaInfo(); updateServiceState(serviceState); @@ -179,6 +190,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O PhoneStateListener.LISTEN_DATA_CONNECTION_STATE | PhoneStateListener.LISTEN_SIGNAL_STRENGTHS | PhoneStateListener.LISTEN_SERVICE_STATE); + mSubscriptionManager.addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener); if (mShowLatestAreaInfo) { mContext.registerReceiver(mAreaInfoReceiver, @@ -198,6 +210,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O return; } + mSubscriptionManager.removeOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener); mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId()) .listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE); @@ -206,8 +219,10 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O } } - private void updateNetworkProvider(ServiceState serviceState) { - mDialog.setText(NETWORK_PROVIDER_VALUE_ID, serviceState.getOperatorAlphaLong()); + private void updateNetworkProvider() { + final CharSequence carrierName = + mSubscriptionInfo != null ? mSubscriptionInfo.getCarrierName() : null; + mDialog.setText(NETWORK_PROVIDER_VALUE_ID, carrierName); } private void updatePhoneNumber() { @@ -441,7 +456,7 @@ public class SimStatusDialogController implements LifecycleObserver, OnResume, O @Override public void onServiceStateChanged(ServiceState serviceState) { - updateNetworkProvider(serviceState); + updateNetworkProvider(); updateServiceState(serviceState); updateRoamingStatus(serviceState); } diff --git a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java index 5a4a809ec0..76c444e2c1 100644 --- a/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +++ b/tests/robotests/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java @@ -63,6 +63,7 @@ import android.telephony.PhoneStateListener; import android.telephony.ServiceState; import android.telephony.SignalStrength; import android.telephony.SubscriptionInfo; +import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.euicc.EuiccManager; @@ -103,6 +104,8 @@ public class SimStatusDialogControllerTest { private PersistableBundle mPersistableBundle; @Mock private EuiccManager mEuiccManager; + @Mock + private SubscriptionManager mSubscriptionManager; private SimStatusDialogController mController; private Context mContext; @@ -123,6 +126,7 @@ public class SimStatusDialogControllerTest { doReturn(mPhoneStateListener).when(mController).getPhoneStateListener(); doReturn("").when(mController).getPhoneNumber(); doReturn(mSignalStrength).when(mController).getSignalStrength(); + doReturn(mSubscriptionInfo).when(mSubscriptionManager).getActiveSubscriptionInfo(anyInt()); when(mEuiccManager.isEnabled()).thenReturn(true); when(mEuiccManager.getEid()).thenReturn(""); @@ -130,6 +134,7 @@ public class SimStatusDialogControllerTest { ReflectionHelpers.setField(mController, "mCarrierConfigManager", mCarrierConfigManager); ReflectionHelpers.setField(mController, "mSubscriptionInfo", mSubscriptionInfo); ReflectionHelpers.setField(mController, "mEuiccManager", mEuiccManager); + ReflectionHelpers.setField(mController, "mSubscriptionManager", mSubscriptionManager); when(mCarrierConfigManager.getConfigForSubId(anyInt())).thenReturn(mPersistableBundle); final ShadowPackageManager shadowPackageManager = @@ -141,8 +146,8 @@ public class SimStatusDialogControllerTest { @Test public void initialize_updateNetworkProviderWithFoobarCarrier_shouldUpdateCarrierWithFoobar() { - final String carrierName = "foobar"; - when(mServiceState.getOperatorAlphaLong()).thenReturn(carrierName); + final CharSequence carrierName = "foobar"; + doReturn(carrierName).when(mSubscriptionInfo).getCarrierName(); mController.initialize(); -- 2.11.0