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

Commit 798b5816 authored by Bonian Chen's avatar Bonian Chen Committed by android-build-merger
Browse files

Merge "[Settings] DataUsage crash when no SIM inserted"

am: 5c8b2265

Change-Id: Iab61f527b75c22eab597eea7ffead91babd72de3
parents 9d5397ab 5c8b2265
Loading
Loading
Loading
Loading
+26 −17
Original line number Diff line number Diff line
@@ -66,7 +66,7 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
            return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains(ETHERNET);
        }

        final ConnectivityManager conn = ConnectivityManager.from(context);
        final ConnectivityManager conn = context.getSystemService(ConnectivityManager.class);
        if (!conn.isNetworkSupported(ConnectivityManager.TYPE_ETHERNET)) {
            return false;
        }
@@ -93,7 +93,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
     * TODO: This is the opposite to Utils.isWifiOnly(), it should be refactored into 1 method.
     */
    public static boolean hasMobileData(Context context) {
        ConnectivityManager connectivityManager = ConnectivityManager.from(context);
        final ConnectivityManager connectivityManager =
                context.getSystemService(ConnectivityManager.class);
        return connectivityManager != null && connectivityManager
                .isNetworkSupported(ConnectivityManager.TYPE_MOBILE);
    }
@@ -106,7 +107,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
            return SystemProperties.get(DataUsageUtils.TEST_RADIOS_PROP).contains("mobile");
        }
        final List<SubscriptionInfo> subInfoList =
                SubscriptionManager.from(context).getActiveSubscriptionInfoList();
                context.getSystemService(SubscriptionManager.class)
                .getActiveSubscriptionInfoList();
        // No activated Subscriptions
        if (subInfoList == null) {
            if (LOGD) {
@@ -123,7 +125,7 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
                Log.d(TAG, "hasReadyMobileRadio: subInfo=" + subInfo);
            }
        }
        final ConnectivityManager conn = ConnectivityManager.from(context);
        final ConnectivityManager conn = context.getSystemService(ConnectivityManager.class);
        final boolean retVal = conn.isNetworkSupported(TYPE_MOBILE) && isReady;
        if (LOGD) {
            Log.d(TAG, "hasReadyMobileRadio:"
@@ -142,7 +144,8 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
            return SystemProperties.get(TEST_RADIOS_PROP).contains("wifi");
        }

        final ConnectivityManager connectivityManager = ConnectivityManager.from(context);
        final ConnectivityManager connectivityManager =
                context.getSystemService(ConnectivityManager.class);
        return connectivityManager != null && connectivityManager.isNetworkSupported(TYPE_WIFI);
    }

@@ -159,19 +162,25 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
     * SubscriptionManager#INVALID_SUBSCRIPTION_ID
     */
    public static int getDefaultSubscriptionId(Context context) {
        SubscriptionManager subManager = SubscriptionManager.from(context);
        if (subManager == null) {
            return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
        final SubscriptionManager subscriptionMgr =
                context.getSystemService(SubscriptionManager.class);

        // default data subscription is first choice
        final int dataSubId = subscriptionMgr.getDefaultDataSubscriptionId();
        if (SubscriptionManager.isValidSubscriptionId(dataSubId)) {
            return dataSubId;
        }
        SubscriptionInfo subscriptionInfo = subManager.getDefaultDataSubscriptionInfo();
        if (subscriptionInfo == null) {
            List<SubscriptionInfo> list = subManager.getAllSubscriptionInfoList();
            if (list.size() == 0) {
                return SubscriptionManager.INVALID_SUBSCRIPTION_ID;

        // any active subscription is second choice
        List<SubscriptionInfo> subList = subscriptionMgr.getActiveSubscriptionInfoList();
        if ((subList == null) || (subList.size() <= 0)) {
            // any subscription is third choice
            subList = subscriptionMgr.getAvailableSubscriptionInfoList();
        }
            subscriptionInfo = list.get(0);
        if ((subList == null) || (subList.size() <= 0)) {
            return SubscriptionManager.INVALID_SUBSCRIPTION_ID;
        }
        return subscriptionInfo.getSubscriptionId();
        return subList.get(0).getSubscriptionId();
    }

    /**
@@ -179,7 +188,7 @@ public final class DataUsageUtils extends com.android.settingslib.net.DataUsageU
     * ethernet template if both mobile data and Wifi are not available.
     */
    public static NetworkTemplate getDefaultTemplate(Context context, int defaultSubId) {
        if (hasMobileData(context) && defaultSubId != SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
        if (SubscriptionManager.isValidSubscriptionId(defaultSubId) && hasMobileData(context)) {
            return getMobileTemplate(context, defaultSubId);
        } else if (hasWifiRadio(context)) {
            return NetworkTemplate.buildTemplateWifiWildcard();