我正在使用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
}