diff options
author | Vasu Nori <vnori@google.com> | 2010-11-04 15:03:31 -0700 |
---|---|---|
committer | Vasu Nori <vnori@google.com> | 2010-11-04 18:05:56 -0700 |
commit | 3ca67748bc92eac89f731796c5597ff1fbe9217b (patch) | |
tree | 8cca1b5b1942b5d85e93c8b7b0ae5be3ce03080e /src/com/android/providers/downloads/DownloadProvider.java | |
parent | 971525cbe68f83a4f05cfe942f774486702947a7 (diff) | |
download | android_packages_providers_DownloadProvider-3ca67748bc92eac89f731796c5597ff1fbe9217b.tar.gz android_packages_providers_DownloadProvider-3ca67748bc92eac89f731796c5597ff1fbe9217b.tar.bz2 android_packages_providers_DownloadProvider-3ca67748bc92eac89f731796c5597ff1fbe9217b.zip |
changes to support CL: I1f5dd734e394db0056579a3a0c26862fee27981e
1. if an application designates a downloaded file to be mediascanner
scannable or not, store that fact in database.
2. use the above to determine whether a file shoudl be mediascanned or not
in DownloadService
3. implement code to return mimetype for the new Uri "/public_downloads"
introduced in CL: I1f5dd734e394db0056579a3a0c26862fee27981e
Change-Id: I5c062ad6d1b58306044cee49ff3827e908d27fd9
Diffstat (limited to 'src/com/android/providers/downloads/DownloadProvider.java')
-rw-r--r-- | src/com/android/providers/downloads/DownloadProvider.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index f6f1b940..ee669a7c 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -16,6 +16,7 @@ package com.android.providers.downloads; +import android.app.DownloadManager; import android.content.ContentProvider; import android.content.ContentUris; import android.content.ContentValues; @@ -26,6 +27,7 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.database.Cursor; +import android.database.DatabaseUtils; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; @@ -35,6 +37,7 @@ import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.Process; import android.provider.Downloads; +import android.text.TextUtils; import android.util.Log; import com.google.common.annotations.VisibleForTesting; @@ -76,6 +79,11 @@ public final class DownloadProvider extends ContentProvider { private static final int ALL_DOWNLOADS_ID = 4; /** URI matcher constant for the URI of a download's request headers */ private static final int REQUEST_HEADERS_URI = 5; + /** URI matcher constant for the public URI returned by + * {@link DownloadManager#getUriForDownloadedFile(long)} if the given downloaded file + * is publicly accessible. + */ + private static final int PUBLIC_DOWNLOAD_ID = 6; static { sURIMatcher.addURI("downloads", "my_downloads", MY_DOWNLOADS); sURIMatcher.addURI("downloads", "my_downloads/#", MY_DOWNLOADS_ID); @@ -93,6 +101,9 @@ public final class DownloadProvider extends ContentProvider { sURIMatcher.addURI("downloads", "download/#/" + Downloads.Impl.RequestHeaders.URI_SEGMENT, REQUEST_HEADERS_URI); + sURIMatcher.addURI("downloads", + Downloads.Impl.PUBLICLY_ACCESSIBLE_DOWNLOADS_URI_SEGMENT + "/#", + PUBLIC_DOWNLOAD_ID); } /** Different base URIs that could be used to access an individual download */ @@ -421,6 +432,15 @@ public final class DownloadProvider extends ContentProvider { case MY_DOWNLOADS_ID: { return DOWNLOAD_TYPE; } + case PUBLIC_DOWNLOAD_ID: { + // return the mimetype of this id from the database + final String id = getDownloadIdFromUri(uri); + final SQLiteDatabase db = mOpenHelper.getReadableDatabase(); + return DatabaseUtils.stringForQuery(db, + "SELECT " + Downloads.Impl.COLUMN_MIME_TYPE + " FROM " + DB_TABLE + + " WHERE " + Downloads.Impl._ID + " = ?", + new String[]{id}); + } default: { if (Constants.LOGV) { Log.v(Constants.TAG, "calling getType on an unknown URI: " + uri); @@ -963,7 +983,8 @@ public final class DownloadProvider extends ContentProvider { int uriMatch) { SqlSelection selection = new SqlSelection(); selection.appendClause(where, whereArgs); - if (uriMatch == MY_DOWNLOADS_ID || uriMatch == ALL_DOWNLOADS_ID) { + if (uriMatch == MY_DOWNLOADS_ID || uriMatch == ALL_DOWNLOADS_ID || + uriMatch == PUBLIC_DOWNLOAD_ID) { selection.appendClause(Downloads.Impl._ID + " = ?", getDownloadIdFromUri(uri)); } if (uriMatch == MY_DOWNLOADS || uriMatch == MY_DOWNLOADS_ID) { |