From 7489c93347f6868065b8fbf3c51cd4b25feec0ff Mon Sep 17 00:00:00 2001 From: songferngwang Date: Wed, 15 May 2024 09:09:57 +0000 Subject: [PATCH] Fix the BasePreferenceController.createInstance's IllegalStateException When the settings search do BasePreferenceController.createInstance, it get the the IllegalStateException, and then the search ignore this controller. It causes the indexing can not filter this controller via the PreferenceController's getAvailabilityStatus. Bug: 335509130 Test: Build pass. Do search and no crash Change-Id: Icaff8ca690ca3e3a46c2f21a5fbde0bbd99fd92e --- .../CallsDefaultSubscriptionController.java | 4 ++++ .../telephony/ConvertToEsimPreferenceController.java | 8 ++++++-- .../telephony/DefaultSubscriptionController.java | 12 ++++++++---- .../telephony/MobileDataPreferenceController.java | 10 +++++++--- .../telephony/RoamingPreferenceController.java | 10 +++++++--- .../telephony/SmsDefaultSubscriptionController.java | 6 ++++++ 6 files changed, 38 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java index eb833b1ae1b..b56c1b93d16 100644 --- a/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/CallsDefaultSubscriptionController.java @@ -31,6 +31,10 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr super(context, preferenceKey, lifecycle, lifecycleOwner); } + public CallsDefaultSubscriptionController(Context context, String preferenceKey) { + super(context, preferenceKey); + } + @Override protected int getDefaultSubscriptionId() { int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId(); diff --git a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java index 08e993b6cde..21cceb5b68f 100644 --- a/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java +++ b/src/com/android/settings/network/telephony/ConvertToEsimPreferenceController.java @@ -69,15 +69,19 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo public ConvertToEsimPreferenceController(Context context, String key, Lifecycle lifecycle, LifecycleOwner lifecycleOwner, int subId) { - super(context, key); + this(context, key); mSubId = subId; - mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mLifecycleOwner = lifecycleOwner; if (lifecycle != null) { lifecycle.addObserver(this); } } + public ConvertToEsimPreferenceController(Context context, String key) { + super(context, key); + mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + } + public void init(int subId, SubscriptionInfoEntity subInfoEntity) { mSubId = subId; mSubscriptionInfoEntity = subInfoEntity; diff --git a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java index 96c39f27df6..e5a4b4657af 100644 --- a/src/com/android/settings/network/telephony/DefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/DefaultSubscriptionController.java @@ -64,16 +64,20 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere public DefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, LifecycleOwner lifecycleOwner) { + this(context, preferenceKey); + mLifecycleOwner = lifecycleOwner; + if (lifecycle != null) { + lifecycle.addObserver(this); + } + } + + public DefaultSubscriptionController(Context context, String preferenceKey) { super(context, preferenceKey); mManager = context.getSystemService(SubscriptionManager.class); mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection() == View.LAYOUT_DIRECTION_RTL; mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); - mLifecycleOwner = lifecycleOwner; - if (lifecycle != null) { - lifecycle.addObserver(this); - } } /** @return the id of the default subscription for the service, or diff --git a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java index bec7ee7459c..28c05c5c64e 100644 --- a/src/com/android/settings/network/telephony/MobileDataPreferenceController.java +++ b/src/com/android/settings/network/telephony/MobileDataPreferenceController.java @@ -72,16 +72,20 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle, LifecycleOwner lifecycleOwner, int subId) { - super(context, key); + this(context, key); mSubId = subId; - mSubscriptionManager = context.getSystemService(SubscriptionManager.class); - mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mLifecycleOwner = lifecycleOwner; if (lifecycle != null) { lifecycle.addObserver(this); } } + public MobileDataPreferenceController(Context context, String key) { + super(context, key); + mSubscriptionManager = context.getSystemService(SubscriptionManager.class); + mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + } + @Override public int getAvailabilityStatus(int subId) { if (Flags.isDualSimOnboardingEnabled()) { diff --git a/src/com/android/settings/network/telephony/RoamingPreferenceController.java b/src/com/android/settings/network/telephony/RoamingPreferenceController.java index fb8cd519e27..bf02308be39 100644 --- a/src/com/android/settings/network/telephony/RoamingPreferenceController.java +++ b/src/com/android/settings/network/telephony/RoamingPreferenceController.java @@ -63,16 +63,20 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro public RoamingPreferenceController(Context context, String key, Lifecycle lifecycle, LifecycleOwner lifecycleOwner, int subId) { - super(context, key); + this(context, key); mSubId = subId; - mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); - mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mLifecycleOwner = lifecycleOwner; if (lifecycle != null) { lifecycle.addObserver(this); } } + public RoamingPreferenceController(Context context, String key) { + super(context, key); + mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class); + mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); + } + @Override public int getAvailabilityStatus() { final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); diff --git a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java index c49647dd105..c35a78c550d 100644 --- a/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java +++ b/src/com/android/settings/network/telephony/SmsDefaultSubscriptionController.java @@ -35,6 +35,12 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl .getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support); } + public SmsDefaultSubscriptionController(Context context, String preferenceKey) { + super(context, preferenceKey); + mIsAskEverytimeSupported = mContext.getResources() + .getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support); + } + @Override protected int getDefaultSubscriptionId() { int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId();