From 1b64e2bfcd5f0dc1b9f4ef98261cb21101d659ea Mon Sep 17 00:00:00 2001 From: Bonian Chen Date: Fri, 17 Dec 2021 14:37:55 +0800 Subject: [PATCH] [Settings] Workaround for network and internet crash Network and internet UI crash. This is a temporarily workaround for it. Bug: 211045208 Test: local Change-Id: Ie19e565547c26967d83b194c2e098286dd676178 --- .../MobileDataPreferenceController.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java index 1ac121e56ff..69951bf43a0 100644 --- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java +++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java @@ -122,6 +122,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @Override public boolean isChecked() { + mTelephonyManager = getTelephonyManager(); return mTelephonyManager.isDataEnabled(); } @@ -152,8 +153,21 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon public void init(FragmentManager fragmentManager, int subId) { mFragmentManager = fragmentManager; mSubId = subId; - mTelephonyManager = mContext.getSystemService(TelephonyManager.class) - .createForSubscriptionId(mSubId); + mTelephonyManager = null; + mTelephonyManager = getTelephonyManager(); + } + + private TelephonyManager getTelephonyManager() { + if (mTelephonyManager != null) { + return mTelephonyManager; + } + TelephonyManager telMgr = + mContext.getSystemService(TelephonyManager.class); + if (mSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) { + telMgr = telMgr.createForSubscriptionId(mSubId); + } + mTelephonyManager = telMgr; + return telMgr; } public void setWifiPickerTrackerHelper(WifiPickerTrackerHelper helper) { @@ -163,6 +177,7 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon @VisibleForTesting boolean isDialogNeeded() { final boolean enableData = !isChecked(); + mTelephonyManager = getTelephonyManager(); final boolean isMultiSim = (mTelephonyManager.getActiveModemCount() > 1); final int defaultSubId = mSubscriptionManager.getDefaultDataSubscriptionId(); final boolean needToDisableOthers = mSubscriptionManager