[Settings] Adopt TelephonyBasePreferenceController

Adopt TelephonyBasePreferenceController for better support on multi-SIM
environment.

Bug: 143996139
Test: make RunSettingsRoboTests -j
ROBOTEST_FILTER=DefaultSubscriptionControllerTest
Test: make RunSettingsRoboTests -j
ROBOTEST_FILTER=DisableSimFooterPreferenceControllerTest

Change-Id: I8a9c6efa927be1cb4a7ab4ebe816dcad9f20bd70
This commit is contained in:
Bonian Chen
2020-05-04 11:15:03 +08:00
parent 37c795af3a
commit 2a7767ee26
2 changed files with 17 additions and 11 deletions

View File

@@ -35,7 +35,6 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen; import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil;
import com.android.settings.network.SubscriptionsChangeListener; import com.android.settings.network.SubscriptionsChangeListener;
@@ -47,8 +46,8 @@ import java.util.List;
* what mobile network subscription is used by default for some service controlled by the * what mobile network subscription is used by default for some service controlled by the
* SubscriptionManager. This can be used for services such as Calls or SMS. * SubscriptionManager. This can be used for services such as Calls or SMS.
*/ */
public abstract class DefaultSubscriptionController extends BasePreferenceController implements public abstract class DefaultSubscriptionController extends TelephonyBasePreferenceController
LifecycleObserver, Preference.OnPreferenceChangeListener, implements LifecycleObserver, Preference.OnPreferenceChangeListener,
SubscriptionsChangeListener.SubscriptionsChangeListenerClient { SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
private static final String TAG = "DefaultSubController"; private static final String TAG = "DefaultSubController";
@@ -85,7 +84,7 @@ public abstract class DefaultSubscriptionController extends BasePreferenceContro
protected abstract void setDefaultSubscription(int subscriptionId); protected abstract void setDefaultSubscription(int subscriptionId);
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(mManager); final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(mManager);
if (subs.size() > 1) { if (subs.size() > 1) {
return AVAILABLE; return AVAILABLE;

View File

@@ -20,30 +20,37 @@ import android.content.Context;
import android.telephony.SubscriptionInfo; import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil; import com.android.settings.network.SubscriptionUtil;
public class DisableSimFooterPreferenceController extends BasePreferenceController { /**
private int mSubId; * Shows information about disable a physical SIM.
*/
public class DisableSimFooterPreferenceController extends TelephonyBasePreferenceController {
/**
* Constructor
*/
public DisableSimFooterPreferenceController(Context context, String preferenceKey) { public DisableSimFooterPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
} }
/**
* re-init for SIM based on given subscription ID.
* @param subId is the given subscription ID
*/
public void init(int subId) { public void init(int subId) {
mSubId = subId; mSubId = subId;
} }
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus(int subId) {
if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) { if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} }
SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class); SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class);
for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) { for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
if (info.getSubscriptionId() == mSubId) { if (info.getSubscriptionId() == subId) {
if (info.isEmbedded() || SubscriptionUtil.showToggleForPhysicalSim(subManager)) { if (info.isEmbedded() || SubscriptionUtil.showToggleForPhysicalSim(subManager)) {
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;
} }