Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a7767ee authored by Bonian Chen's avatar Bonian Chen
Browse files

[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
parent 37c795af
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.network.SubscriptionUtil;
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
 * SubscriptionManager. This can be used for services such as Calls or SMS.
 */
public abstract class DefaultSubscriptionController extends BasePreferenceController implements
        LifecycleObserver, Preference.OnPreferenceChangeListener,
public abstract class DefaultSubscriptionController extends TelephonyBasePreferenceController
        implements LifecycleObserver, Preference.OnPreferenceChangeListener,
        SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
    private static final String TAG = "DefaultSubController";

@@ -85,7 +84,7 @@ public abstract class DefaultSubscriptionController extends BasePreferenceContro
    protected abstract void setDefaultSubscription(int subscriptionId);

    @Override
    public int getAvailabilityStatus() {
    public int getAvailabilityStatus(int subId) {
        final List<SubscriptionInfo> subs = SubscriptionUtil.getActiveSubscriptions(mManager);
        if (subs.size() > 1) {
            return AVAILABLE;
+14 −7
Original line number Diff line number Diff line
@@ -20,30 +20,37 @@ import android.content.Context;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;

import com.android.settings.core.BasePreferenceController;
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) {
        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) {
        mSubId = subId;
    }

    @Override
    public int getAvailabilityStatus() {
        if (mSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
    public int getAvailabilityStatus(int subId) {
        if (subId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
            return CONDITIONALLY_UNAVAILABLE;
        }

        SubscriptionManager subManager = mContext.getSystemService(SubscriptionManager.class);
        for (SubscriptionInfo info : SubscriptionUtil.getAvailableSubscriptions(mContext)) {
            if (info.getSubscriptionId() == mSubId) {
            if (info.getSubscriptionId() == subId) {
                if (info.isEmbedded() || SubscriptionUtil.showToggleForPhysicalSim(subManager)) {
                    return CONDITIONALLY_UNAVAILABLE;
                }