diff options
author | Jeff Sharkey <jsharkey@android.com> | 2013-09-10 17:05:04 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-09-10 17:05:04 -0700 |
commit | 530366c385676e4dc296ae0850e7b506ff3cd16e (patch) | |
tree | 170bd9ed63a6e994c81523c7940cc38d72f733ea | |
parent | 41a364c3718237eb94917890f1955c2b8b0fc852 (diff) | |
parent | 36276c61fc07509b65b06f8ee4be2bd9e82dfd91 (diff) | |
download | android_packages_providers_DownloadProvider-530366c385676e4dc296ae0850e7b506ff3cd16e.tar.gz android_packages_providers_DownloadProvider-530366c385676e4dc296ae0850e7b506ff3cd16e.tar.bz2 android_packages_providers_DownloadProvider-530366c385676e4dc296ae0850e7b506ff3cd16e.zip |
am 36276c61: am 1aad6c66: Omit duplicate images, query for management UI.
* commit '36276c61fc07509b65b06f8ee4be2bd9e82dfd91':
Omit duplicate images, query for management UI.
-rw-r--r-- | src/com/android/providers/downloads/DownloadStorageProvider.java | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 9315ea32..7268c5c6 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -31,6 +31,7 @@ import android.provider.DocumentsContract; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; +import android.text.TextUtils; import libcore.io.IoUtils; @@ -56,14 +57,11 @@ public class DownloadStorageProvider extends DocumentsProvider { }; private DownloadManager mDm; - private DownloadManager.Query mBaseQuery; @Override public boolean onCreate() { mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); mDm.setAccessAllDownloads(true); - mBaseQuery = new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true); - return true; } @@ -138,7 +136,31 @@ public class DownloadStorageProvider extends DocumentsProvider { final long token = Binder.clearCallingIdentity(); Cursor cursor = null; try { - cursor = mDm.query(mBaseQuery); + cursor = mDm.query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true) + .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL)); + copyNotificationUri(result, cursor); + while (cursor.moveToNext()) { + includeDownloadFromCursor(result, cursor); + } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); + } + return result; + } + + @Override + public Cursor queryChildDocumentsForManage( + String parentDocumentId, String[] projection, String sortOrder) + throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + cursor = mDm.query( + new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true)); copyNotificationUri(result, cursor); while (cursor.moveToNext()) { includeDownloadFromCursor(result, cursor); @@ -163,6 +185,18 @@ public class DownloadStorageProvider extends DocumentsProvider { .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL)); copyNotificationUri(result, cursor); while (cursor.moveToNext() && result.getCount() < 12) { + final String mimeType = cursor.getString( + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE)); + final String uri = cursor.getString( + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIAPROVIDER_URI)); + + // Skip images that have been inserted into the MediaStore so we + // don't duplicate them in the recents list. + if (mimeType == null + || (mimeType.startsWith("image/") && !TextUtils.isEmpty(uri))) { + continue; + } + includeDownloadFromCursor(result, cursor); } } finally { |