diff --git a/res/values/config.xml b/res/values/config.xml
index ee727bcb2e4..28bf7232aca 100755
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -710,4 +710,9 @@
+
+
+
+
+
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index 68751e5a2df..b1661e1f3ca 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -58,15 +58,20 @@ import com.android.settings.R;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.datausage.CycleAdapter.SpinnerInterface;
import com.android.settings.network.MobileDataEnabledListener;
+import com.android.settings.network.MobileNetworkRepository;
import com.android.settings.network.ProxySubscriptionManager;
import com.android.settings.widget.LoadingViewController;
import com.android.settingslib.AppItem;
+import com.android.settingslib.mobile.dataservice.SubscriptionInfoEntity;
import com.android.settingslib.net.NetworkCycleChartData;
import com.android.settingslib.net.NetworkCycleChartDataLoader;
import com.android.settingslib.net.NetworkStatsSummaryLoader;
+import com.android.settingslib.net.UidDetail;
import com.android.settingslib.net.UidDetailProvider;
+import com.android.settingslib.utils.ThreadUtils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
@@ -118,6 +123,8 @@ public class DataUsageList extends DataUsageBaseFragment
private Preference mUsageAmount;
private PreferenceGroup mApps;
private View mHeader;
+ private MobileNetworkRepository mMobileNetworkRepository;
+ private SubscriptionInfoEntity mSubscriptionInfoEntity;
@Override
public int getMetricsCategory() {
@@ -146,6 +153,11 @@ public class DataUsageList extends DataUsageBaseFragment
}
processArgument();
+ mMobileNetworkRepository = MobileNetworkRepository.getInstance(getContext());
+ ThreadUtils.postOnBackgroundThread(() -> {
+ mSubscriptionInfoEntity = mMobileNetworkRepository.getSubInfoById(
+ String.valueOf(mSubId));
+ });
mDataStateListener = new MobileDataEnabledListener(activity, this);
}
@@ -451,7 +463,23 @@ public class DataUsageList extends DataUsageBaseFragment
}
Collections.sort(items);
+ final List packageNames = Arrays.asList(getContext().getResources().getStringArray(
+ R.array.datausage_hiding_carrier_service_package_names));
+ boolean shouldHidePackageName = mSubscriptionInfoEntity != null
+ ? Arrays.stream(getContext().getResources().getIntArray(
+ R.array.datausage_hiding_carrier_service_carrier_id))
+ .anyMatch(carrierId -> (carrierId == mSubscriptionInfoEntity.carrierId))
+ : false;
+
for (int i = 0; i < items.size(); i++) {
+ UidDetail detail = mUidDetailProvider.getUidDetail(items.get(i).key, true);
+ // Do not show carrier service package in data usage list if it should be hidden for
+ // the carrier.
+ if (detail != null && shouldHidePackageName && packageNames.contains(
+ detail.packageName)) {
+ continue;
+ }
+
final int percentTotal = largest != 0 ? (int) (items.get(i).total * 100 / largest) : 0;
final AppDataUsagePreference preference = new AppDataUsagePreference(getContext(),
items.get(i), percentTotal, mUidDetailProvider);