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

This commit is contained in:
Bonian Chen
2019-12-16 08:05:17 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 17 deletions

View File

@@ -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) {

View File

@@ -140,6 +140,7 @@ public class ProxySubscriptionManager implements LifecycleObserver {
@OnLifecycleEvent(ON_DESTROY)
void onDestroy() {
mSubsciptionsMonitor.close();
mAirplaneModeMonitor.close();
if (mLifecycle != null) {

View File

@@ -101,7 +101,7 @@ public class ActiveSubsciptionsListenerTest {
@After
public void cleanUp() {
mListener.stop();
mListener.close();
}
private class ActiveSubsciptionsListenerImpl extends ActiveSubsciptionsListener {