diff options
| author | Jeff Davidson <jpd@google.com> | 2015-12-15 19:04:25 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-12-15 19:04:25 +0000 |
| commit | 40e2ce37d3ddd9b2c33ba3b68e6c28c67e1edea0 (patch) | |
| tree | 0045c22f1d4ee7b6a3177d6146023195187f78c9 /core/java | |
| parent | f99104dadddb8d7587aaa607821d284e214eb997 (diff) | |
| parent | 1efb1335814aea8ee0696144ca0ab24159b86e54 (diff) | |
Merge "Relax permissions around NetworkStatsManager APIs."
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/usage/NetworkStatsManager.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/core/java/android/app/usage/NetworkStatsManager.java b/core/java/android/app/usage/NetworkStatsManager.java index 2886cda9d273..0fce7a90eaba 100644 --- a/core/java/android/app/usage/NetworkStatsManager.java +++ b/core/java/android/app/usage/NetworkStatsManager.java @@ -21,6 +21,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkIdentity; import android.net.NetworkTemplate; +import android.os.Build; import android.os.RemoteException; import android.util.Log; @@ -29,10 +30,9 @@ import android.util.Log; * discrete bins of time called 'Buckets'. See {@link NetworkStats.Bucket} for details. * <p /> * Queries can define a time interval in the form of start and end timestamps (Long.MIN_VALUE and - * Long.MAX_VALUE can be used to simulate open ended intervals). All queries (except - * {@link #querySummaryForDevice}) collect only network usage of apps belonging to the same user - * as the client. In addition tethering usage, usage by removed users and apps, and usage by system - * is also included in the results. + * Long.MAX_VALUE can be used to simulate open ended intervals). By default, apps can only obtain + * data about themselves. See the below note for special cases in which apps can obtain data about + * other applications. * <h3> * Summary queries * </h3> @@ -51,13 +51,20 @@ import android.util.Log; * multiple buckets for a particular key but all Bucket's state is going to be * {@link NetworkStats.Bucket#STATE_ALL}. * <p /> - * <b>NOTE:</b> This API requires the permission + * <b>NOTE:</b> Accessing stats for apps other than the calling app requires the permission * {@link android.Manifest.permission#PACKAGE_USAGE_STATS}, which is a system-level permission and * will not be granted to third-party apps. However, declaring the permission implies intention to * use the API and the user of the device can grant permission through the Settings application. * Profile owner apps are automatically granted permission to query data on the profile they manage - * (that is, for any query except {@link #querySummaryForDevice}). Device owner apps likewise get - * access to usage data of the primary user. + * (that is, for any query except {@link #querySummaryForDevice}). Device owner apps and carrier- + * privileged apps likewise get access to usage data for all users on the device. + * <p /> + * In addition to tethering usage, usage by removed users and apps, and usage by the system + * is also included in the results for callers with one of these higher levels of access. + * <p /> + * <b>NOTE:</b> Prior to API level {@value Build.VERSION_CODES#N}, all calls to these APIs required + * the above permission, even to access an app's own data usage, and carrier-privileged apps were + * not included. */ public class NetworkStatsManager { private final static String TAG = "NetworkStatsManager"; |
