From ba845f7fe438cb6c69c8df3a558603e6e66f8a11 Mon Sep 17 00:00:00 2001 From: tom hsu Date: Tue, 29 Dec 2020 20:03:08 +0800 Subject: [PATCH] Avoid wrong telephonymanager with wrong sub id. When initialized SimStatusDialogController, also create TelephonyManager with sub id. Bug: 174171839 Test: Manual test passed, see b/174171839#25 Change-Id: I6bd6975e39c75884252b9d0bcd9d5548dbdfe6d5 --- .../deviceinfo/simstatus/SimStatusDialogController.java | 3 ++- .../deviceinfo/simstatus/SimStatusDialogControllerTest.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java index 414039beede..ee99e0954ac 100644 --- a/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java +++ b/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogController.java @@ -233,7 +233,8 @@ public class SimStatusDialogController implements LifecycleObserver { if (mSubscriptionInfo == null) { return; } - + mTelephonyManager = + mTelephonyManager.createForSubscriptionId(mSubscriptionInfo.getSubscriptionId()); mPhoneStateListener = getPhoneStateListener(); updateLatestAreaInfo(); updateSubscriptionStatus(); diff --git a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java index e94c4e7ad82..ae534d09fd4 100644 --- a/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java +++ b/tests/unit/src/com/android/settings/deviceinfo/simstatus/SimStatusDialogControllerTest.java @@ -136,7 +136,7 @@ public class SimStatusDialogControllerTest { when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager); doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId( - SubscriptionManager.DEFAULT_SUBSCRIPTION_ID); + anyInt()); doReturn(2).when(mTelephonyManager).getCardIdForDefaultEuicc(); doReturn(TelephonyManager.NETWORK_TYPE_LTE).when(mTelephonyManager).getDataNetworkType();