You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配Android DownloadManager下载项与MediaStore中生成的对应记录

DownloadManager条目与MediaStore记录匹配方案

方法1:通过文件路径+文件名组合匹配

这是兼容性最高、误判率最低的匹配方式,操作步骤如下:

  • 从DownloadManager查询下载完成的条目时,通过DownloadManager.COLUMN_LOCAL_URI或者低版本可用的DownloadManager.COLUMN_LOCAL_FILENAME获取文件的绝对路径、完整文件名
  • 查询MediaStore时,读取MediaStore.Downloads.DATA字段(Android 10及以下适用)、MediaStore.Downloads.DISPLAY_NAME字段,分别和从DownloadManager拿到的路径、文件名做双重匹配,保证准确率
  • 如果下载时指定了自定义存储路径,查询MediaStore时要确保覆盖对应存储分区的路径范围

方法2:通过包名过滤+特征字段组合匹配

针对Android 10及以上系统,可以利用系统预留的包名字段缩小匹配范围:

  • 先从DownloadManager拉取当前应用发起的所有下载任务,记录每个任务的文件大小、最后修改时间戳、文件名三个特征字段
  • 查询MediaStore.Downloads表时,先添加过滤条件MediaStore.Downloads.OWNER_PACKAGE_NAME = "你的应用包名",过滤掉其他应用产生的下载记录
  • 再用之前记录的文件大小、最后修改时间、文件名三个特征组合匹配,几乎不会出现误匹配的情况

注意事项

  • 不要依赖下载URL匹配:DownloadManager会自动处理301/302跳转,最终请求的URL和你传入的原始URL大概率不一致,MediaStore存储的也是最终下载地址,匹配没有参考价值
  • Android 12及以上系统,查询自身应用产生的MediaStore下载记录不需要申请额外存储权限,只有查询其他应用的下载记录才需要特殊权限
  • 如果下载的是图片、视频、音频类媒体文件,可以额外匹配MediaStore.MediaColumns.MIME_TYPE字段,和DownloadManager返回的COLUMN_MEDIA_TYPE做二次校验,进一步降低误判概率

内容的提问来源于stack exchange,提问作者user7431543

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:30:01