diff options
Diffstat (limited to 'src/com/android/providers/downloads/DownloadProvider.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 48 |
1 files changed, 41 insertions, 7 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index a7f2093c..35c80de4 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -752,6 +752,8 @@ public final class DownloadProvider extends ContentProvider { filteredValues.put(Downloads.Impl.COLUMN_DESTINATION, dest); } + ensureDefaultColumns(values); + // copy some of the input values as is copyString(Downloads.Impl.COLUMN_URI, values, filteredValues); copyString(Downloads.Impl.COLUMN_APP_DATA, values, filteredValues); @@ -838,13 +840,7 @@ public final class DownloadProvider extends ContentProvider { copyStringWithDefault(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues, ""); // is_visible_in_downloads_ui column - if (values.containsKey(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI)) { - copyBoolean(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, values, filteredValues); - } else { - // by default, make external downloads visible in the UI - boolean isExternal = (dest == null || dest == Downloads.Impl.DESTINATION_EXTERNAL); - filteredValues.put(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, isExternal); - } + copyBoolean(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, values, filteredValues); // public api requests and networktypes/roaming columns if (isPublicApi) { @@ -1037,6 +1033,44 @@ public final class DownloadProvider extends ContentProvider { return packages[0]; } + private void ensureDefaultColumns(ContentValues values) { + final Integer dest = values.getAsInteger(COLUMN_DESTINATION); + if (dest != null) { + final int mediaScannable; + final boolean visibleInDownloadsUi; + if (dest == Downloads.Impl.DESTINATION_EXTERNAL) { + mediaScannable = MEDIA_NOT_SCANNED; + visibleInDownloadsUi = true; + } else if (dest != DESTINATION_FILE_URI + && dest != DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD) { + mediaScannable = MEDIA_NOT_SCANNABLE; + visibleInDownloadsUi = false; + } else { + final File file; + if (dest == Downloads.Impl.DESTINATION_FILE_URI) { + final String fileUri = values.getAsString(Downloads.Impl.COLUMN_FILE_NAME_HINT); + file = new File(getFileUri(fileUri).getPath()); + } else { + file = new File(values.getAsString(Downloads.Impl._DATA)); + } + + if (Helpers.isFileInExternalAndroidDirs(file.getAbsolutePath())) { + mediaScannable = MEDIA_NOT_SCANNABLE; + visibleInDownloadsUi = false; + } else { + mediaScannable = MEDIA_NOT_SCANNED; + visibleInDownloadsUi = true; + } + } + values.put(COLUMN_MEDIA_SCANNED, mediaScannable); + values.put(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, visibleInDownloadsUi); + } else { + if (!values.containsKey(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI)) { + values.put(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, true); + } + } + } + /** * Check that the file URI provided for DESTINATION_FILE_URI is valid. */ |