Merge "[Settings] Data usage for each subscription" into rvc-dev am: eca8cf5166
Change-Id: I2b3025ed7e988ce73883d18b71b223ec3f9658cf
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user