diff options
| author | 2010-12-13 16:28:31 -0800 | |
|---|---|---|
| committer | 2010-12-14 15:10:32 -0800 | |
| commit | f83e6e4b7a7fcbfcc8e3b6078f4655fa3e64bce3 (patch) | |
| tree | 7dbdd35757583568f7350fc29f87308cf1fea616 | |
| parent | 29f94b781e1834d8280aba741b6e86b164d1223c (diff) | |
bug:3264401 changes to support usage of new downloads dir in /data
Change-Id: I209a624523f727d47a4a8f758c13df5d4eac614f
| -rw-r--r-- | core/java/android/app/DownloadManager.java | 25 | ||||
| -rw-r--r-- | core/java/android/provider/Downloads.java | 7 |
2 files changed, 31 insertions, 1 deletions
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java index ed4aed2e95c4..a24375eba621 100644 --- a/core/java/android/app/DownloadManager.java +++ b/core/java/android/app/DownloadManager.java @@ -24,6 +24,7 @@ import android.database.Cursor; import android.database.CursorWrapper; import android.net.ConnectivityManager; import android.net.Uri; +import android.os.Binder; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.provider.Downloads; @@ -335,6 +336,7 @@ public class DownloadManager { private int mAllowedNetworkTypes = ~0; // default to all network types allowed private boolean mIsVisibleInDownloadsUi = true; private boolean mScannable = false; + private boolean mUseSystemCache = false; /** if a file is designated as a MediaScanner scannable file, the following value is * stored in the database column {@link Downloads.Impl#COLUMN_MEDIA_SCANNED}. */ @@ -402,6 +404,24 @@ public class DownloadManager { } /** + * Set the local destination for the downloaded file to the system cache dir (/cache). + * This is only available to System apps with the permission + * {@link android.Manifest.permission#ACCESS_CACHE_FILESYSTEM}. + * <p> + * The downloaded file is not scanned by MediaScanner. + * But it can be made scannable by calling {@link #allowScanningByMediaScanner()}. + * <p> + * Files downloaded to /cache may be deleted by the system at any time to reclaim space. + * + * @return this object + * @hide + */ + public Request setDestinationToSystemCache() { + mUseSystemCache = true; + return this; + } + + /** * Set the local destination for the downloaded file to a path within the application's * external files directory (as returned by {@link Context#getExternalFilesDir(String)}. * <p> @@ -596,7 +616,9 @@ public class DownloadManager { values.put(Downloads.Impl.COLUMN_FILE_NAME_HINT, mDestinationUri.toString()); } else { values.put(Downloads.Impl.COLUMN_DESTINATION, - Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE); + (this.mUseSystemCache) ? + Downloads.Impl.DESTINATION_SYSTEMCACHE_PARTITION : + Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE); } // is the file supposed to be media-scannable? values.put(Downloads.Impl.COLUMN_MEDIA_SCANNED, (mScannable) ? SCANNABLE_VALUE_YES : @@ -918,6 +940,7 @@ public class DownloadManager { // non-external storage for a downloaded file, then the following code // should also check for that destination. if (destination == Downloads.Impl.DESTINATION_CACHE_PARTITION || + destination == Downloads.Impl.DESTINATION_SYSTEMCACHE_PARTITION || destination == Downloads.Impl.DESTINATION_CACHE_PARTITION_NOROAMING || destination == Downloads.Impl.DESTINATION_CACHE_PARTITION_PURGEABLE) { // return private uri diff --git a/core/java/android/provider/Downloads.java b/core/java/android/provider/Downloads.java index b2b8c5af9df2..013edd395ae7 100644 --- a/core/java/android/provider/Downloads.java +++ b/core/java/android/provider/Downloads.java @@ -459,6 +459,13 @@ public final class Downloads { public static final int DESTINATION_FILE_URI = 4; /** + * This download will be saved to the system cache ("/cache") + * partition. This option is only used by system apps and so it requires + * android.permission.ACCESS_CACHE_FILESYSTEM permission. + */ + public static final int DESTINATION_SYSTEMCACHE_PARTITION = 5; + + /** * This download is allowed to run. */ public static final int CONTROL_RUN = 0; |