summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Bonian Chen <bonianchen@google.com> 2020-04-10 13:36:16 +0800
committer Bonian Chen <bonianchen@google.com> 2020-04-10 13:42:20 +0800
commit3ff2708e806961a2b8e077e841b27f48e6fdc6ae (patch)
treec6c6503fe242bd15260ceb22fee020111f501883
parent305c46de820d85db986e5d99e47ab80e97d710bd (diff)
[Settings] Data usage for each subscription
1. Data usage should be displayed for different subscription. 2. Data usage could support displaying information for disabled SIM Bug: 151751844 Test: manual Change-Id: Ie79e9968989c40c9be00dd3004a6a5a2eb2fa029
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java48
1 files changed, 34 insertions, 14 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
index 9d7e2c821297..b1234f291b74 100644
--- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
@@ -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());
-
- if (!subscriptionManager.isActiveSubscriptionId(subId)) {
- Log.i(TAG, "Subscription is not active: " + subId);
- return mobileAll;
+ final TelephonyManager telephonyManager = context.getSystemService(TelephonyManager.class);
+ final int mobileDefaultSubId = telephonyManager.getSubscriptionId();
+
+ 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));
}
}