查询完成下载的DownloadManager内容URI会给出状态200吗?

时间:2017-09-10 18:17:04

标签: android android-contentprovider android-download-manager

我正在使用Android的DownloadManager来启动一些下载,并在完成后检索它们的URI。他们有方案content://,所以我想使用ContentResolver应该给我我需要的信息。

运行查询后:

val query = contentResolver.query(uri, null, null, null, null)

我得到一个Cursor包含一堆关于下载的正确信息,例如它的mimetype,filepath等。我有兴趣检查下载的状态(主要是为了查看它是否被删除),所以我'阅读status栏。

然而,它总是返回200.我的第一个想法是它是一个HTTP成功响应,并且可能是DownloadManager在其后建模其状态,但事实并非如此,因为DownloadManager.STATUS_SUCCESSFUL的常量值为8。并且,根据DownloadManager.COLUMN_STATUS,状态应该始终是这些常数之一(其中没有一个是200)。我已经在APi 26和23的仿真器上得到了这个。

我是否误解了如何将ContentProvider与DownloadManager结合使用?或者,有没有更好的方法可以确保以前的下载尚未删除?

编辑:以下是来自ContentResolver的DatabaseUtils.dumpCursor(query)的输出:

0 {
   _id=3
   entity=null
   _data=/storage/emulated/0/Download/*removed*
   mimetype=text/plain
   visibility=1
   destination=4
   control=null
   status=200
   lastmod=1505066595033
   notificationpackage=*removed*
   notificationclass=null
   total_bytes=213
   current_bytes=213
   title=*removed*
   description=*removed*
   uri=https://*removed*
   is_visible_in_downloads_ui=1
   hint=file:///storage/emulated/0/Download/*removed*
   mediaprovider_uri=content://media/external/file/35
   deleted=0
   _display_name=*removed*
   _size=213
}

从DownloadManager:

0 {
   _id=3
   local_filename=/storage/emulated/0/Download/*removed*
   mediaprovider_uri=content://media/external/file/35
   destination=4
   title=*removed*
   description=*removed*
   uri=https://*removed*
   status=200
   hint=file:///storage/emulated/0/Download/*removed*
   media_type=text/plain
   total_size=213
   last_modified_timestamp=1505066595033
   bytes_so_far=213
   allow_write=0
   local_uri=file:///storage/emulated/0/Download/*removed*
   reason=placeholder
}

0 个答案:

没有答案