From 28613321367b0c6acf092d315fa9f9f16675b850 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 7 Jan 2016 09:59:39 -0700 Subject: Request access to the filename column. Otherwise it would throw at us because it's deprecated for third-party apps. Bug: 26438975 Change-Id: Ifd8f0b61ce475a009ef68ef4cb29f5f3780ced70 --- src/com/android/providers/downloads/DownloadStorageProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index c8d942c8..a36f0d81 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -72,6 +72,7 @@ public class DownloadStorageProvider extends DocumentsProvider { public boolean onCreate() { mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); mDm.setAccessAllDownloads(true); + mDm.setAccessFilename(true); mArchiveHelper = new DocumentArchiveHelper(this, ':'); return true; } -- cgit v1.2.3 From d42b36e7f5b1da1ca6daf316ef216e9bb1debbae Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 8 Jan 2016 09:25:22 -0700 Subject: Opening downloads also needs filename access. Bug: 26454235 Change-Id: I61d68f694e6460b46a56b111092094a3111c291b --- src/com/android/providers/downloads/OpenHelper.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/providers/downloads/OpenHelper.java b/src/com/android/providers/downloads/OpenHelper.java index 4eb319c4..4b051be5 100644 --- a/src/com/android/providers/downloads/OpenHelper.java +++ b/src/com/android/providers/downloads/OpenHelper.java @@ -65,6 +65,7 @@ public class OpenHelper { final DownloadManager downManager = (DownloadManager) context.getSystemService( Context.DOWNLOAD_SERVICE); downManager.setAccessAllDownloads(true); + downManager.setAccessFilename(true); final Cursor cursor = downManager.query(new DownloadManager.Query().setFilterById(id)); try { -- cgit v1.2.3 From 01c7b5df1286ad904e6a98b8f61109c5b914dbf2 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 9 May 2016 14:51:23 -0600 Subject: Scan completed downloads when requested. The recent JobScheduler rewrite means we no longer spin up a service when insterting an already-completed download. However, the calling app may have requested the download to be scanned, so kick off a scan request for them. Bug: 28659693 Change-Id: I497e10995ba04f1522fe8d7e547ebea6e305f6e9 --- src/com/android/providers/downloads/DownloadProvider.java | 10 ++++++++++ src/com/android/providers/downloads/DownloadScanner.java | 11 +++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index 00ed043d..4b83cacb 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -17,7 +17,11 @@ package com.android.providers.downloads; import static android.provider.BaseColumns._ID; +import static android.provider.Downloads.Impl.COLUMN_DESTINATION; import static android.provider.Downloads.Impl.COLUMN_MEDIAPROVIDER_URI; +import static android.provider.Downloads.Impl.COLUMN_MEDIA_SCANNED; +import static android.provider.Downloads.Impl.COLUMN_MIME_TYPE; +import static android.provider.Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD; import static android.provider.Downloads.Impl._DATA; import android.app.AppOpsManager; @@ -695,6 +699,12 @@ public final class DownloadProvider extends ContentProvider { Binder.restoreCallingIdentity(token); } + if (values.getAsInteger(COLUMN_DESTINATION) == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD + && values.getAsInteger(COLUMN_MEDIA_SCANNED) == 0) { + DownloadScanner.requestScanBlocking(getContext(), rowID, values.getAsString(_DATA), + values.getAsString(COLUMN_MIME_TYPE)); + } + return ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, rowID); } diff --git a/src/com/android/providers/downloads/DownloadScanner.java b/src/com/android/providers/downloads/DownloadScanner.java index 37f51143..4a5ba87e 100644 --- a/src/com/android/providers/downloads/DownloadScanner.java +++ b/src/com/android/providers/downloads/DownloadScanner.java @@ -76,9 +76,13 @@ public class DownloadScanner implements MediaScannerConnectionClient { } public static void requestScanBlocking(Context context, DownloadInfo info) { + requestScanBlocking(context, info.mId, info.mFileName, info.mMimeType); + } + + public static void requestScanBlocking(Context context, long id, String path, String mimeType) { final DownloadScanner scanner = new DownloadScanner(context); scanner.mLatch = new CountDownLatch(1); - scanner.requestScan(info); + scanner.requestScan(new ScanRequest(id, path, mimeType)); try { scanner.mLatch.await(SCAN_TIMEOUT, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { @@ -115,10 +119,9 @@ public class DownloadScanner implements MediaScannerConnectionClient { * * @see #hasPendingScans() */ - public void requestScan(DownloadInfo info) { - if (LOGV) Log.v(TAG, "requestScan() for " + info.mFileName); + public void requestScan(ScanRequest req) { + if (LOGV) Log.v(TAG, "requestScan() for " + req.path); synchronized (mConnection) { - final ScanRequest req = new ScanRequest(info.mId, info.mFileName, info.mMimeType); mPending.put(req.path, req); if (mConnection.isConnected()) { -- cgit v1.2.3