Show data restricted apps, unify strings.
Always show apps with background data restricted, even when not
used in selected time period. Combine measurement disclaimer into
single string, and only show for mobile networks. Unify limit
dialog string.
Bug: 6007276, 5505010, 5495020, 5456087
Change-Id: I0ec307b330838dc9528d7e63e0ac1edd14ba122c
diff --git a/res/layout/data_usage_header.xml b/res/layout/data_usage_header.xml
index aa2beb2..a7b12b7 100644
--- a/res/layout/data_usage_header.xml
+++ b/res/layout/data_usage_header.xml
@@ -45,17 +45,6 @@
android:paddingRight="@*android:dimen/preference_item_padding_side"
android:paddingTop="8dip"
android:paddingBottom="8dip"
- android:singleLine="true"
- android:ellipsize="marquee"
- android:textAppearance="?android:attr/textAppearanceSmall" />
-
- <TextView
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingLeft="@*android:dimen/preference_item_padding_side"
- android:paddingRight="@*android:dimen/preference_item_padding_side"
- android:paddingBottom="8dip"
- android:text="@string/data_usage_disclaimer"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 6d7994f..97ee27c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -3626,10 +3626,8 @@
<!-- Label for data usage occuring while application in background. [CHAR LIMIT=48] -->
<string name="data_usage_label_background">Background</string>
- <!-- Disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
- <string name="data_usage_disclaimer" product="tablet">Measured by your tablet. Your carrier\'s data usage accounting may differ.</string>
- <!-- Disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
- <string name="data_usage_disclaimer" product="default">Measured by your phone. Your carrier\'s data usage accounting may differ.</string>
+ <!-- Label for application which has its data usage restricted. [CHAR LIMIT=16] -->
+ <string name="data_usage_app_restricted">restricted</string>
<!-- Body of dialog shown to request confirmation that mobile data will be disabled. [CHAR LIMIT=NONE] -->
<string name="data_usage_disable_mobile">Disable mobile data?</string>
@@ -3695,9 +3693,9 @@
<!-- Title of dialog shown before user limits data usage. [CHAR LIMIT=48] -->
<string name="data_usage_limit_dialog_title">Limiting data usage</string>
<!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
- <string name="data_usage_limit_dialog" product="tablet">Your <xliff:g id="networks" example="mobile">%1$s</xliff:g> data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your tablet, and your carrier may account for usage differently, consider using a conservative limit.</string>
+ <string name="data_usage_limit_dialog_mobile" product="tablet">Your mobile data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your tablet, and your carrier may account for usage differently, consider using a conservative limit.</string>
<!-- Body of dialog shown before user limits mobile data usage. [CHAR LIMIT=NONE] -->
- <string name="data_usage_limit_dialog" product="default">Your <xliff:g id="networks" example="mobile">%1$s</xliff:g> data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider using a conservative limit.</string>
+ <string name="data_usage_limit_dialog_mobile" product="default">Your mobile data connection will be disabled when the specified limit is reached.\n\nSince data usage is measured by your phone, and your carrier may account for usage differently, consider using a conservative limit.</string>
<!-- Title of dialog shown before user restricts background data usage. [CHAR LIMIT=48] -->
<string name="data_usage_restrict_background_title">Restrict background data?</string>
@@ -3714,7 +3712,12 @@
<!-- Combination of total network bytes sent and received by an application. [CHAR LIMIT=NONE] -->
<string name="data_usage_received_sent"><xliff:g id="received" example="128KB">%1$s</xliff:g> received, <xliff:g id="sent" example="1.3GB">%2$s</xliff:g> sent</string>
<!-- Label displaying total network data transferred during a specific time period. [CHAR LIMIT=64] -->
- <string name="data_usage_total_during_range"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used</string>
+ <string name="data_usage_total_during_range"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used.</string>
+
+ <!-- Label displaying total network data transferred during a specific time period, including a disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
+ <string name="data_usage_total_during_range_mobile" product="tablet"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used, as measured by your tablet. Your carrier\'s data usage accounting may differ.</string>
+ <!-- Label displaying total network data transferred during a specific time period, including a disclaimer that contrasts device versus carrier reporting. [CHAR LIMIT=80] -->
+ <string name="data_usage_total_during_range_mobile" product="default"><xliff:g id="range" example="Jul 1 - Jul 31">%2$s</xliff:g>: about <xliff:g id="total" example="128KB">%1$s</xliff:g> used, as measured by your phone. Your carrier\'s data usage accounting may differ.</string>
<!-- Dialog title for selecting paid networks. [CHAR LIMIT=25] -->
<string name="data_usage_metered_title">Expensive networks</string>
diff --git a/src/com/android/settings/DataUsageSummary.java b/src/com/android/settings/DataUsageSummary.java
index 70c0d9b..ae9c1cb 100644
--- a/src/com/android/settings/DataUsageSummary.java
+++ b/src/com/android/settings/DataUsageSummary.java
@@ -1147,8 +1147,15 @@
final String totalPhrase = Formatter.formatFileSize(context, totalBytes);
final String rangePhrase = formatDateRange(context, start, end);
- mUsageSummary.setText(
- getString(R.string.data_usage_total_during_range, totalPhrase, rangePhrase));
+ final int summaryRes;
+ if (TAB_MOBILE.equals(mCurrentTab) || TAB_3G.equals(mCurrentApp)
+ || TAB_4G.equals(mCurrentApp)) {
+ summaryRes = R.string.data_usage_total_during_range_mobile;
+ } else {
+ summaryRes = R.string.data_usage_total_during_range;
+ }
+
+ mUsageSummary.setText(getString(summaryRes, totalPhrase, rangePhrase));
}
private final LoaderCallbacks<ChartData> mChartDataCallbacks = new LoaderCallbacks<
@@ -1191,13 +1198,15 @@
@Override
public void onLoadFinished(Loader<NetworkStats> loader, NetworkStats data) {
- mAdapter.bindStats(data);
+ final int[] restrictedAppIds = mPolicyManager.getAppsWithPolicy(
+ POLICY_REJECT_METERED_BACKGROUND);
+ mAdapter.bindStats(data, restrictedAppIds);
updateEmptyVisible();
}
@Override
public void onLoaderReset(Loader<NetworkStats> loader) {
- mAdapter.bindStats(null);
+ mAdapter.bindStats(null, new int[0]);
updateEmptyVisible();
}
@@ -1374,6 +1383,7 @@
public static class AppItem implements Comparable<AppItem>, Parcelable {
public final int appId;
+ public boolean restricted;
public SparseBooleanArray uids = new SparseBooleanArray();
public long total;
@@ -1439,7 +1449,7 @@
/**
* Bind the given {@link NetworkStats}, or {@code null} to clear list.
*/
- public void bindStats(NetworkStats stats) {
+ public void bindStats(NetworkStats stats, int[] restrictedAppIds) {
mItems.clear();
final AppItem systemItem = new AppItem(android.os.Process.SYSTEM_UID);
@@ -1468,6 +1478,16 @@
}
}
+ for (int appId : restrictedAppIds) {
+ AppItem item = knownUids.get(appId);
+ if (item == null) {
+ item = new AppItem(appId);
+ item.total = -1;
+ mItems.add(item);
+ }
+ item.restricted = true;
+ }
+
if (systemItem.total > 0) {
mItems.add(systemItem);
}
@@ -1513,7 +1533,13 @@
final AppItem item = mItems.get(position);
UidDetailTask.bindView(mProvider, item, convertView);
- text1.setText(Formatter.formatFileSize(context, item.total));
+ if (item.restricted && item.total <= 0) {
+ text1.setText(R.string.data_usage_app_restricted);
+ progress.setVisibility(View.GONE);
+ } else {
+ text1.setText(Formatter.formatFileSize(context, item.total));
+ progress.setVisibility(View.VISIBLE);
+ }
final int percentTotal = mLargest != 0 ? (int) (item.total * 100 / mLargest) : 0;
progress.setProgress(percentTotal);
@@ -1580,16 +1606,13 @@
// TODO: customize default limits based on network template
final String currentTab = parent.mCurrentTab;
if (TAB_3G.equals(currentTab)) {
- message = buildDialogMessage(res, R.string.data_usage_tab_3g);
+ message = res.getString(R.string.data_usage_limit_dialog_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else if (TAB_4G.equals(currentTab)) {
- message = buildDialogMessage(res, R.string.data_usage_tab_4g);
+ message = res.getString(R.string.data_usage_limit_dialog_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else if (TAB_MOBILE.equals(currentTab)) {
- message = buildDialogMessage(res, R.string.data_usage_list_mobile);
- limitBytes = 5 * GB_IN_BYTES;
- } else if (TAB_WIFI.equals(currentTab)) {
- message = buildDialogMessage(res, R.string.data_usage_tab_wifi);
+ message = res.getString(R.string.data_usage_limit_dialog_mobile);
limitBytes = 5 * GB_IN_BYTES;
} else {
throw new IllegalArgumentException("unknown current tab: " + currentTab);
@@ -1605,10 +1628,6 @@
dialog.show(parent.getFragmentManager(), TAG_CONFIRM_LIMIT);
}
- private static CharSequence buildDialogMessage(Resources res, int networkResId) {
- return res.getString(R.string.data_usage_limit_dialog, res.getString(networkResId));
- }
-
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity();
diff --git a/src/com/android/settings/net/ChartDataLoader.java b/src/com/android/settings/net/ChartDataLoader.java
index 830d006..e0336b7 100644
--- a/src/com/android/settings/net/ChartDataLoader.java
+++ b/src/com/android/settings/net/ChartDataLoader.java
@@ -21,6 +21,7 @@
import static android.net.NetworkStats.TAG_NONE;
import static android.net.NetworkStatsHistory.FIELD_RX_BYTES;
import static android.net.NetworkStatsHistory.FIELD_TX_BYTES;
+import static android.text.format.DateUtils.HOUR_IN_MILLIS;
import android.content.AsyncTaskLoader;
import android.content.Context;
@@ -88,9 +89,6 @@
data.network = mSession.getHistoryForNetwork(template, fields);
if (app != null) {
- data.detailDefault = null;
- data.detailForeground = null;
-
// load stats for current uid and template
final int size = app.uids.size();
for (int i = 0; i < size; i++) {
@@ -101,9 +99,15 @@
template, uid, SET_FOREGROUND, data.detailForeground);
}
- data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration());
- data.detail.recordEntireHistory(data.detailDefault);
- data.detail.recordEntireHistory(data.detailForeground);
+ if (size > 0) {
+ data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration());
+ data.detail.recordEntireHistory(data.detailDefault);
+ data.detail.recordEntireHistory(data.detailForeground);
+ } else {
+ data.detailDefault = new NetworkStatsHistory(HOUR_IN_MILLIS);
+ data.detailForeground = new NetworkStatsHistory(HOUR_IN_MILLIS);
+ data.detail = new NetworkStatsHistory(HOUR_IN_MILLIS);
+ }
}
return data;