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
This commit is contained in:
songferngwang
2024-05-15 09:09:57 +00:00
committed by SongFerng Wang
parent 381638f284
commit 7489c93347
6 changed files with 38 additions and 12 deletions

View File

@@ -31,6 +31,10 @@ public class CallsDefaultSubscriptionController extends DefaultSubscriptionContr
super(context, preferenceKey, lifecycle, lifecycleOwner); super(context, preferenceKey, lifecycle, lifecycleOwner);
} }
public CallsDefaultSubscriptionController(Context context, String preferenceKey) {
super(context, preferenceKey);
}
@Override @Override
protected int getDefaultSubscriptionId() { protected int getDefaultSubscriptionId() {
int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId(); int defaultCallSubId = SubscriptionManager.getDefaultVoiceSubscriptionId();

View File

@@ -69,15 +69,19 @@ public class ConvertToEsimPreferenceController extends TelephonyBasePreferenceCo
public ConvertToEsimPreferenceController(Context context, String key, Lifecycle lifecycle, public ConvertToEsimPreferenceController(Context context, String key, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner, int subId) { LifecycleOwner lifecycleOwner, int subId) {
super(context, key); this(context, key);
mSubId = subId; mSubId = subId;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
} }
public ConvertToEsimPreferenceController(Context context, String key) {
super(context, key);
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
}
public void init(int subId, SubscriptionInfoEntity subInfoEntity) { public void init(int subId, SubscriptionInfoEntity subInfoEntity) {
mSubId = subId; mSubId = subId;
mSubscriptionInfoEntity = subInfoEntity; mSubscriptionInfoEntity = subInfoEntity;

View File

@@ -64,16 +64,20 @@ public abstract class DefaultSubscriptionController extends TelephonyBasePrefere
public DefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle, public DefaultSubscriptionController(Context context, String preferenceKey, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner) { LifecycleOwner lifecycleOwner) {
this(context, preferenceKey);
mLifecycleOwner = lifecycleOwner;
if (lifecycle != null) {
lifecycle.addObserver(this);
}
}
public DefaultSubscriptionController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mManager = context.getSystemService(SubscriptionManager.class); mManager = context.getSystemService(SubscriptionManager.class);
mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection() mIsRtlMode = context.getResources().getConfiguration().getLayoutDirection()
== View.LAYOUT_DIRECTION_RTL; == View.LAYOUT_DIRECTION_RTL;
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context); mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this); mDataSubscriptionChangedReceiver = new DefaultSubscriptionReceiver(context, this);
mLifecycleOwner = lifecycleOwner;
if (lifecycle != null) {
lifecycle.addObserver(this);
}
} }
/** @return the id of the default subscription for the service, or /** @return the id of the default subscription for the service, or

View File

@@ -72,16 +72,20 @@ public class MobileDataPreferenceController extends TelephonyTogglePreferenceCon
public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle, public MobileDataPreferenceController(Context context, String key, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner, int subId) { LifecycleOwner lifecycleOwner, int subId) {
super(context, key); this(context, key);
mSubId = subId; mSubId = subId;
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
} }
public MobileDataPreferenceController(Context context, String key) {
super(context, key);
mSubscriptionManager = context.getSystemService(SubscriptionManager.class);
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
}
@Override @Override
public int getAvailabilityStatus(int subId) { public int getAvailabilityStatus(int subId) {
if (Flags.isDualSimOnboardingEnabled()) { if (Flags.isDualSimOnboardingEnabled()) {

View File

@@ -63,16 +63,20 @@ public class RoamingPreferenceController extends TelephonyTogglePreferenceContro
public RoamingPreferenceController(Context context, String key, Lifecycle lifecycle, public RoamingPreferenceController(Context context, String key, Lifecycle lifecycle,
LifecycleOwner lifecycleOwner, int subId) { LifecycleOwner lifecycleOwner, int subId) {
super(context, key); this(context, key);
mSubId = subId; mSubId = subId;
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
mLifecycleOwner = lifecycleOwner; mLifecycleOwner = lifecycleOwner;
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); lifecycle.addObserver(this);
} }
} }
public RoamingPreferenceController(Context context, String key) {
super(context, key);
mCarrierConfigManager = context.getSystemService(CarrierConfigManager.class);
mMobileNetworkRepository = MobileNetworkRepository.getInstance(context);
}
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId); final PersistableBundle carrierConfig = mCarrierConfigManager.getConfigForSubId(mSubId);

View File

@@ -35,6 +35,12 @@ public class SmsDefaultSubscriptionController extends DefaultSubscriptionControl
.getBoolean(com.android.internal.R.bool.config_sms_ask_every_time_support); .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 @Override
protected int getDefaultSubscriptionId() { protected int getDefaultSubscriptionId() {
int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId(); int defaultSmsSubId = SubscriptionManager.getDefaultSmsSubscriptionId();