diff options
author | Vasu Nori <vnori@google.com> | 2010-11-16 18:06:10 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-11-16 18:06:10 -0800 |
commit | b2475011bc6d02f3da91e754a5898cd7f44e8eb6 (patch) | |
tree | b2423f585be16736b6cf94bb23d55c8f72e7ad50 | |
parent | e521c16eb6b343fe1ef70106e78c9b077d575bee (diff) | |
parent | 6e2b2a660ebc2f690b341da6e83d2cd2af99ebeb (diff) | |
download | frameworks_base-b2475011bc6d02f3da91e754a5898cd7f44e8eb6.zip frameworks_base-b2475011bc6d02f3da91e754a5898cd7f44e8eb6.tar.gz frameworks_base-b2475011bc6d02f3da91e754a5898cd7f44e8eb6.tar.bz2 |
Merge "return file uri from downloadmanager instead of content uri for public downloads"
-rw-r--r-- | api/current.xml | 13 | ||||
-rw-r--r-- | core/java/android/app/DownloadManager.java | 44 |
2 files changed, 51 insertions, 6 deletions
diff --git a/api/current.xml b/api/current.xml index c9c6f6f..ebfa842 100644 --- a/api/current.xml +++ b/api/current.xml @@ -26482,6 +26482,19 @@ <parameter name="request" type="android.app.DownloadManager.Request"> </parameter> </method> +<method name="getMimeTypeForDownloadedFile" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="not deprecated" + visibility="public" +> +<parameter name="id" type="long"> +</parameter> +</method> <method name="getUriForDownloadedFile" return="android.net.Uri" abstract="false" diff --git a/core/java/android/app/DownloadManager.java b/core/java/android/app/DownloadManager.java index 6e18533..09a21f8 100644 --- a/core/java/android/app/DownloadManager.java +++ b/core/java/android/app/DownloadManager.java @@ -886,8 +886,8 @@ public class DownloadManager { * downloaded successfully. otherwise, null is returned. *<p> * If the specified downloaded file is in external storage (for example, /sdcard dir), - * then it is assumed to be safe for anyone to read and the returned {@link Uri} can be used - * by any app to access the downloaded file. + * then it is assumed to be safe for anyone to read and the returned {@link Uri} corresponds + * to the filepath on sdcard. * * @param id the id of the downloaded file. * @return the {@link Uri} for the given downloaded file id, if download was successful. null @@ -903,8 +903,7 @@ public class DownloadManager { return null; } while (cursor.moveToFirst()) { - int status = cursor.getInt(cursor.getColumnIndexOrThrow( - DownloadManager.COLUMN_STATUS)); + int status = cursor.getInt(cursor.getColumnIndexOrThrow(COLUMN_STATUS)); if (DownloadManager.STATUS_SUCCESSFUL == status) { int indx = cursor.getColumnIndexOrThrow( Downloads.Impl.COLUMN_DESTINATION); @@ -919,8 +918,9 @@ public class DownloadManager { return ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, id); } else { // return public uri - return ContentUris.withAppendedId( - Downloads.Impl.PUBLICLY_ACCESSIBLE_DOWNLOADS_URI, id); + String path = cursor.getString( + cursor.getColumnIndexOrThrow(COLUMN_LOCAL_FILENAME)); + return Uri.fromFile(new File(path)); } } } @@ -934,6 +934,38 @@ public class DownloadManager { } /** + * Returns {@link Uri} for the given downloaded file id, if the file is + * downloaded successfully. otherwise, null is returned. + *<p> + * If the specified downloaded file is in external storage (for example, /sdcard dir), + * then it is assumed to be safe for anyone to read and the returned {@link Uri} corresponds + * to the filepath on sdcard. + * + * @param id the id of the downloaded file. + * @return the {@link Uri} for the given downloaded file id, if download was successful. null + * otherwise. + */ + public String getMimeTypeForDownloadedFile(long id) { + Query query = new Query().setFilterById(id); + Cursor cursor = null; + try { + cursor = query(query); + if (cursor == null) { + return null; + } + while (cursor.moveToFirst()) { + return cursor.getString(cursor.getColumnIndexOrThrow(COLUMN_MEDIA_TYPE)); + } + } finally { + if (cursor != null) { + cursor.close(); + } + } + // downloaded file not found or its status is not 'successfully completed' + return null; + } + + /** * Restart the given downloads, which must have already completed (successfully or not). This * method will only work when called from within the download manager's process. * @param ids the IDs of the downloads |