Merge "[Settings] Data usage for each subscription" into rvc-dev

This commit is contained in:
Bonian Chen
2020-04-10 08:30:07 +00:00
committed by Android (Google) Code Review

View File

@@ -18,11 +18,15 @@ package com.android.settingslib.net;
import android.content.Context; import android.content.Context;
import android.net.NetworkTemplate; import android.net.NetworkTemplate;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager; import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager; import android.telephony.TelephonyManager;
import android.util.Log; import android.util.Log;
import com.android.internal.util.ArrayUtils; import com.android.internal.util.ArrayUtils;
import java.util.List;
/** /**
* Utils class for data usage * Utils class for data usage
*/ */
@@ -33,26 +37,42 @@ public class DataUsageUtils {
* Return mobile NetworkTemplate based on {@code subId} * Return mobile NetworkTemplate based on {@code subId}
*/ */
public static NetworkTemplate getMobileTemplate(Context context, int subId) { public static NetworkTemplate getMobileTemplate(Context context, int subId) {
final TelephonyManager telephonyManager = context.getSystemService( final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
TelephonyManager.class); final int mobileDefaultSubId = telephonyManager.getSubscriptionId();
final SubscriptionManager subscriptionManager = context.getSystemService(
SubscriptionManager.class);
final NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
telephonyManager.getSubscriberId());
if (!subscriptionManager.isActiveSubscriptionId(subId)) { final SubscriptionManager subscriptionManager =
Log.i(TAG, "Subscription is not active: " + subId); context.getSystemService(SubscriptionManager.class);
return mobileAll; final List<SubscriptionInfo> subInfoList =
subscriptionManager.getAvailableSubscriptionInfoList();
if (subInfoList == null) {
Log.i(TAG, "Subscription is not inited: " + subId);
return getMobileTemplateForSubId(telephonyManager, mobileDefaultSubId);
} }
final String[] mergedSubscriberIds = telephonyManager.createForSubscriptionId(subId) for (SubscriptionInfo subInfo : subInfoList) {
.getMergedImsisFromGroup(); if ((subInfo != null) && (subInfo.getSubscriptionId() == subId)) {
return getNormalizedMobileTemplate(telephonyManager, subId);
}
}
Log.i(TAG, "Subscription is not active: " + subId);
return getMobileTemplateForSubId(telephonyManager, mobileDefaultSubId);
}
private static NetworkTemplate getNormalizedMobileTemplate(
TelephonyManager telephonyManager, int subId) {
final NetworkTemplate mobileTemplate = getMobileTemplateForSubId(telephonyManager, subId);
final String[] mergedSubscriberIds = telephonyManager
.createForSubscriptionId(subId).getMergedImsisFromGroup();
if (ArrayUtils.isEmpty(mergedSubscriberIds)) { if (ArrayUtils.isEmpty(mergedSubscriberIds)) {
Log.i(TAG, "mergedSubscriberIds is null."); Log.i(TAG, "mergedSubscriberIds is null.");
return mobileAll; return mobileTemplate;
} }
return NetworkTemplate.normalize(mobileAll, mergedSubscriberIds); return NetworkTemplate.normalize(mobileTemplate, mergedSubscriberIds);
}
private static NetworkTemplate getMobileTemplateForSubId(
TelephonyManager telephonyManager, int subId) {
return NetworkTemplate.buildTemplateMobileAll(telephonyManager.getSubscriberId(subId));
} }
} }