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

Commit d230b552 authored by Bonian Chen's avatar Bonian Chen Committed by Android (Google) Code Review
Browse files

Merge "[Settings] Unable to display disabled SIM (part 2)"

parents 8e25a3a6 c5f39519
Loading
Loading
Loading
Loading
+31 −16
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.os.Looper;
import android.telephony.CarrierConfigManager;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.Log;

@@ -39,9 +40,11 @@ import java.util.concurrent.atomic.AtomicInteger;
 * A listener for active subscription change
 */
public abstract class ActiveSubsciptionsListener
        extends SubscriptionManager.OnSubscriptionsChangedListener {
        extends SubscriptionManager.OnSubscriptionsChangedListener
        implements AutoCloseable {

    private static final String TAG = "ActiveSubsciptions";
    private static final boolean DEBUG = false;

    /**
     * Constructor
@@ -61,6 +64,8 @@ public abstract class ActiveSubsciptionsListener
                CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED);
        mSubscriptionChangeIntentFilter.addAction(
                TelephonyIntents.ACTION_RADIO_TECHNOLOGY_CHANGED);
        mSubscriptionChangeIntentFilter.addAction(
                TelephonyManager.ACTION_MULTI_SIM_CONFIG_CHANGED);
    }

    @VisibleForTesting
@@ -134,6 +139,13 @@ public abstract class ActiveSubsciptionsListener
        monitorSubscriptionsChange(false);
    }

    /**
     * Implementation of {@code AutoCloseable}
     */
    public void close() {
        stop();
    }

    /**
     * Get SubscriptionManager
     *
@@ -174,6 +186,7 @@ public abstract class ActiveSubsciptionsListener
        mCachedActiveSubscriptionInfo = getSubscriptionManager().getActiveSubscriptionInfoList();
        mCacheState.compareAndSet(STATE_LISTENING, STATE_DATA_CACHED);

        if (DEBUG) {
            if ((mCachedActiveSubscriptionInfo == null)
                    || (mCachedActiveSubscriptionInfo.size() <= 0)) {
                Log.d(TAG, "active subscriptions: " + mCachedActiveSubscriptionInfo);
@@ -184,6 +197,7 @@ public abstract class ActiveSubsciptionsListener
                }
                Log.d(TAG, logString.toString());
            }
        }

        return mCachedActiveSubscriptionInfo;
    }
@@ -208,12 +222,12 @@ public abstract class ActiveSubsciptionsListener
    }

    /**
     * Get a list of accessible subscription info
     * Get a list of all subscription info which accessible by Settings app
     *
     * @return A list of accessible subscription info
     */
    public List<SubscriptionInfo> getAccessibleSubscriptionsInfo() {
        return getSubscriptionManager().getAccessibleSubscriptionInfoList();
        return getSubscriptionManager().getAvailableSubscriptionInfoList();
    }

    /**
@@ -223,12 +237,13 @@ public abstract class ActiveSubsciptionsListener
     * @return A subscription info which is accessible list
     */
    public SubscriptionInfo getAccessibleSubscriptionInfo(int subId) {
        if (mCacheState.get() >= STATE_DATA_CACHED) {
        // Always check if subId is part of activeSubscriptions
        // since there's cache design within SubscriptionManager.
        // That give us a chance to avoid from querying ContentProvider.
        final SubscriptionInfo activeSubInfo = getActiveSubscriptionInfo(subId);
        if (activeSubInfo != null) {
            return activeSubInfo;
        }
        }

        final List<SubscriptionInfo> subInfoList = getAccessibleSubscriptionsInfo();
        if (subInfoList == null) {
+1 −0
Original line number Diff line number Diff line
@@ -140,6 +140,7 @@ public class ProxySubscriptionManager implements LifecycleObserver {

    @OnLifecycleEvent(ON_DESTROY)
    void onDestroy() {
        mSubsciptionsMonitor.close();
        mAirplaneModeMonitor.close();

        if (mLifecycle != null) {
+1 −1
Original line number Diff line number Diff line
@@ -101,7 +101,7 @@ public class ActiveSubsciptionsListenerTest {

    @After
    public void cleanUp() {
        mListener.stop();
        mListener.close();
    }

    private class ActiveSubsciptionsListenerImpl extends ActiveSubsciptionsListener {