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.net.NetworkTemplate;
import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
import com.android.internal.util.ArrayUtils;
import java.util.List;
/**
* Utils class for data usage
*/
@@ -33,26 +37,42 @@ public class DataUsageUtils {
* Return mobile NetworkTemplate based on {@code subId}
*/
public static NetworkTemplate getMobileTemplate(Context context, int subId) {
final TelephonyManager telephonyManager = context.getSystemService(
TelephonyManager.class);
final SubscriptionManager subscriptionManager = context.getSystemService(
SubscriptionManager.class);
final NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
telephonyManager.getSubscriberId());
final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
final int mobileDefaultSubId = telephonyManager.getSubscriptionId();
if (!subscriptionManager.isActiveSubscriptionId(subId)) {
Log.i(TAG, "Subscription is not active: " + subId);
return mobileAll;
final SubscriptionManager subscriptionManager =
context.getSystemService(SubscriptionManager.class);
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)
.getMergedImsisFromGroup();
for (SubscriptionInfo subInfo : subInfoList) {
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)) {
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));
}
}