diff --git a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java index 92b8a9df488..bfe78e5de07 100644 --- a/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java +++ b/src/com/android/settings/datausage/DataUsageSummaryPreferenceController.java @@ -40,6 +40,7 @@ import com.android.internal.util.CollectionUtils; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.core.PreferenceControllerMixin; +import com.android.settings.network.ProxySubscriptionManager; import com.android.settings.widget.EntityHeaderController; import com.android.settingslib.NetworkPolicyEditor; import com.android.settingslib.core.lifecycle.Lifecycle; @@ -117,8 +118,8 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll NetworkPolicyManager policyManager = activity.getSystemService(NetworkPolicyManager.class); mPolicyEditor = new NetworkPolicyEditor(policyManager); - mHasMobileData = DataUsageUtils.hasMobileData(activity) - && mSubscriptionId != SubscriptionManager.INVALID_SUBSCRIPTION_ID; + mHasMobileData = SubscriptionManager.isValidSubscriptionId(mSubscriptionId) + && DataUsageUtils.hasMobileData(activity); mDataUsageController = new DataUsageController(activity); mDataUsageController.setSubscriptionId(mSubscriptionId); @@ -270,11 +271,10 @@ public class DataUsageSummaryPreferenceController extends BasePreferenceControll mCycleEnd = info.cycleEnd; mSnapshotTime = -1L; - SubscriptionInfo subInfo = mSubscriptionManager.getActiveSubscriptionInfo(mSubscriptionId); - if (subInfo == null) { - subInfo = mSubscriptionManager.getAvailableSubscriptionInfoList().stream().filter( - i -> i.getSubscriptionId() == mSubscriptionId).findFirst().orElse(null); - } + final ProxySubscriptionManager proxySubsciptionMgr = + ProxySubscriptionManager.getInstance(mContext); + final SubscriptionInfo subInfo = proxySubsciptionMgr + .getAccessibleSubscriptionInfo(mSubscriptionId); if (subInfo != null && mHasMobileData) { mCarrierName = subInfo.getCarrierName(); List plans = mSubscriptionManager.getSubscriptionPlans( diff --git a/src/com/android/settings/datausage/DataUsageUtils.java b/src/com/android/settings/datausage/DataUsageUtils.java index 433d1eda855..02bfda802c6 100644 --- a/src/com/android/settings/datausage/DataUsageUtils.java +++ b/src/com/android/settings/datausage/DataUsageUtils.java @@ -33,6 +33,8 @@ import android.text.format.Formatter; import android.text.format.Formatter.BytesResult; import android.util.Log; +import com.android.settings.network.ProxySubscriptionManager; + import java.util.List; /** @@ -107,8 +109,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile"); } final List subInfoList = - context.getSystemService(SubscriptionManager.class) - .getActiveSubscriptionInfoList(); + ProxySubscriptionManager.getInstance(context) + .getActiveSubscriptionsInfo(); // No activated Subscriptions if (subInfoList == null) { if (LOGD) { @@ -150,6 +152,14 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU } public static boolean hasSim(Context context) { + // Access cache within ProxySubscriptionManager to speed up + final List subInfoList = + ProxySubscriptionManager.getInstance(context) + .getActiveSubscriptionsInfo(); + if ((subInfoList != null) && (subInfoList.size() > 0)) { + return true; + } + TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class); final int simState = telephonyManager.getSimState(); // Note that pulling the SIM card returns UNKNOWN, not ABSENT. @@ -162,20 +172,20 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU * SubscriptionManager#INVALID_SUBSCRIPTION_ID */ public static int getDefaultSubscriptionId(Context context) { - final SubscriptionManager subscriptionMgr = - context.getSystemService(SubscriptionManager.class); - // default data subscription is first choice - final int dataSubId = subscriptionMgr.getDefaultDataSubscriptionId(); + final int dataSubId = SubscriptionManager.getDefaultDataSubscriptionId(); if (SubscriptionManager.isValidSubscriptionId(dataSubId)) { return dataSubId; } + final ProxySubscriptionManager proxySubscriptionMgr = + ProxySubscriptionManager.getInstance(context); + // any active subscription is second choice - List subList = subscriptionMgr.getActiveSubscriptionInfoList(); + List subList = proxySubscriptionMgr.getActiveSubscriptionsInfo(); if ((subList == null) || (subList.size() <= 0)) { // any subscription is third choice - subList = subscriptionMgr.getAvailableSubscriptionInfoList(); + subList = proxySubscriptionMgr.getAccessibleSubscriptionsInfo(); } if ((subList == null) || (subList.size() <= 0)) { return SubscriptionManager.INVALID_SUBSCRIPTION_ID;