From 792e091045d89c875399251f92e015afe8dee412 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 16 Apr 2012 11:52:18 -0700 Subject: [PATCH] DownloadManager and metered networks. API to control whether a download is allowed to use metered networks. Bug: 3001465 Change-Id: I29153d2a7495a2e9f76ef5be0a77696a85823839 --- api/current.txt | 1 + core/java/android/app/DownloadManager.java | 20 ++++++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/api/current.txt b/api/current.txt index 052fd482b3080..4062bc172db85 100644 --- a/api/current.txt +++ b/api/current.txt @@ -3251,6 +3251,7 @@ package android.app { method public android.app.DownloadManager.Request addRequestHeader(java.lang.String, java.lang.String); method public void allowScanningByMediaScanner(); method public android.app.DownloadManager.Request setAllowedNetworkTypes(int); + method public android.app.DownloadManager.Request setAllowedOverMetered(boolean); method public android.app.DownloadManager.Request setAllowedOverRoaming(boolean); method public android.app.DownloadManager.Request setDescription(java.lang.CharSequence); method public android.app.DownloadManager.Request setDestinationInExternalFilesDir(android.content.Context, java.lang.String, java.lang.String); diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java index dd583976b34aa..55f29e6d5aac0 100644 --- a/core/java/android/app/DownloadManager.java +++ b/core/java/android/app/DownloadManager.java @@ -349,6 +349,7 @@ public class DownloadManager { private String mMimeType; private boolean mRoamingAllowed = true; private int mAllowedNetworkTypes = ~0; // default to all network types allowed + private boolean mAllowedOverMetered = true; private boolean mIsVisibleInDownloadsUi = true; private boolean mScannable = false; private boolean mUseSystemCache = false; @@ -609,8 +610,11 @@ public class DownloadManager { } /** - * Restrict the types of networks over which this download may proceed. By default, all - * network types are allowed. + * Restrict the types of networks over which this download may proceed. + * By default, all network types are allowed. Consider using + * {@link #setAllowedOverMetered(boolean)} instead, since it's more + * flexible. + * * @param flags any combination of the NETWORK_* bit flags. * @return this object */ @@ -619,6 +623,17 @@ public class DownloadManager { return this; } + /** + * Set whether this download may proceed over a metered network + * connection. By default, metered networks are allowed. + * + * @see ConnectivityManager#isActiveNetworkMetered() + */ + public Request setAllowedOverMetered(boolean allow) { + mAllowedOverMetered = allow; + return this; + } + /** * Set whether this download may proceed over a roaming connection. By default, roaming is * allowed. @@ -672,6 +687,7 @@ public class DownloadManager { putIfNonNull(values, Downloads.Impl.COLUMN_DESCRIPTION, mDescription); putIfNonNull(values, Downloads.Impl.COLUMN_MIME_TYPE, mMimeType); + // TODO: add COLUMN_ALLOW_METERED and persist values.put(Downloads.Impl.COLUMN_VISIBILITY, mNotificationVisibility); values.put(Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES, mAllowedNetworkTypes); values.put(Downloads.Impl.COLUMN_ALLOW_ROAMING, mRoamingAllowed);