diff options
| author | Kenny Root <kroot@google.com> | 2010-10-15 11:20:42 -0700 |
|---|---|---|
| committer | Kenny Root <kroot@google.com> | 2010-10-15 11:20:42 -0700 |
| commit | 9ca6d71c52fcfab730b65bb01ff6bd47232c8599 (patch) | |
| tree | 8b29badb4e0c8fcd5aaacde4b8ee7ae35553444e /core/java/android/app/DownloadManager.java | |
| parent | 72cd64b20ed7118a6c0ed12f4924659abb5dcd0d (diff) | |
| parent | c6bf3eaab40f90e4e4db4dea9fdca8740b00606a (diff) | |
resolved conflicts for merge of c6bf3eaa to master
Change-Id: I6421faf52c160a81b03c63b91f1aedfe0f151cac
Diffstat (limited to 'core/java/android/app/DownloadManager.java')
| -rw-r--r-- | core/java/android/app/DownloadManager.java | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java index b9a541dec257..fd96cf0f7119 100644 --- a/core/java/android/app/DownloadManager.java +++ b/core/java/android/app/DownloadManager.java @@ -28,7 +28,6 @@ import android.os.Environment; import android.os.ParcelFileDescriptor; import android.provider.BaseColumns; import android.provider.Downloads; -import android.util.Log; import android.util.Pair; import java.io.File; @@ -141,6 +140,12 @@ public class DownloadManager { */ public final static String COLUMN_LAST_MODIFIED_TIMESTAMP = "last_modified_timestamp"; + /** + * The URI to the corresponding entry in MediaProvider for this downloaded entry. It is + * used to delete the entries from MediaProvider database when it is deleted from the + * downloaded list. + */ + public static final String COLUMN_MEDIAPROVIDER_URI = "mediaprovider_uri"; /** * Value of {@link #COLUMN_STATUS} when the download is waiting to start. @@ -271,6 +276,7 @@ public class DownloadManager { // this array must contain all public columns private static final String[] COLUMNS = new String[] { COLUMN_ID, + COLUMN_MEDIAPROVIDER_URI, COLUMN_TITLE, COLUMN_DESCRIPTION, COLUMN_URI, @@ -287,6 +293,7 @@ public class DownloadManager { // columns to request from DownloadProvider private static final String[] UNDERLYING_COLUMNS = new String[] { Downloads.Impl._ID, + Downloads.Impl.COLUMN_MEDIAPROVIDER_URI, Downloads.COLUMN_TITLE, Downloads.COLUMN_DESCRIPTION, Downloads.COLUMN_URI, @@ -683,6 +690,9 @@ public class DownloadManager { selectionParts.add(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI + " != '0'"); } + // only return rows which are not marked 'deleted = 1' + selectionParts.add(Downloads.Impl.COLUMN_DELETED + " != '1'"); + String selection = joinStrings(" AND ", selectionParts); String orderDirection = (mOrderDirection == ORDER_ASCENDING ? "ASC" : "DESC"); String orderBy = mOrderByColumn + " " + orderDirection; @@ -749,6 +759,26 @@ public class DownloadManager { } /** + * Marks the specified download as 'to be deleted'. This is done when a completed download + * is to be removed but the row was stored without enough info to delete the corresponding + * metadata from Mediaprovider database. Actual cleanup of this row is done in DownloadService. + * + * @param ids the IDs of the downloads to be marked 'deleted' + * @return the number of downloads actually updated + * @hide + */ + public int markRowDeleted(long... ids) { + if (ids == null || ids.length == 0) { + // called with nothing to remove! + throw new IllegalArgumentException("input param 'ids' can't be null"); + } + ContentValues values = new ContentValues(); + values.put(Downloads.Impl.COLUMN_DELETED, 1); + return mResolver.update(mBaseUri, values, getWhereClauseForIds(ids), + getWhereArgsForIds(ids)); + } + + /** * Cancel downloads and remove them from the download manager. Each download will be stopped if * it was running, and it will no longer be accessible through the download manager. If a file * was already downloaded to external storage, it will not be deleted. @@ -959,6 +989,9 @@ public class DownloadManager { if (column.equals(COLUMN_LOCAL_FILENAME)) { return getUnderlyingString(Downloads.Impl._DATA); } + if (column.equals(COLUMN_MEDIAPROVIDER_URI)) { + return getUnderlyingString(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI); + } assert column.equals(COLUMN_LOCAL_URI); return getLocalUri(); |
