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

Android开发:如何通过内容URI获取标题、MIME类型等文件详情

标准MediaStore URI的信息查询方案

你持有的content://media/external/images/media/161596是Android媒体存储体系的标准URI,本身不需要依赖MediaStore.MediaColumns里的URI类常量做映射,直接通过ContentResolver对该URI发起查询即可拿到所有存储在MediaStore里的元数据。

实现步骤

  1. 提前申请对应存储权限
    • Android 12及以下:申请READ_EXTERNAL_STORAGE
    • Android 13(API33)及以上:根据媒体类型申请细分权限,比如查图片需要READ_MEDIA_IMAGES,查音频需要READ_MEDIA_AUDIO
  2. 定义需要查询的元数据列
    常用的对应你需求的列常量:
    • 文件标题:MediaStore.MediaColumns.DISPLAY_NAME
    • MIME类型:MediaStore.MediaColumns.MIME_TYPE
    • 艺术家信息:MediaStore.MediaColumns.ARTIST(图片文件的EXIF版权/作者字段、音频文件的专辑艺术家字段都会映射到这个列)
    • 其他扩展信息:文件大小、存储相对路径、拍摄时间、经纬度等,都可以从MediaStore的对应列常量中取值
  3. 直接以持有的URI为查询目标发起请求
    核心实现代码(Kotlin版本):
val targetMediaUri = Uri.parse("content://media/external/images/media/161596")

// 按需替换为你需要查询的列
val projection = arrayOf(
    MediaStore.MediaColumns._ID,
    MediaStore.MediaColumns.DISPLAY_NAME,
    MediaStore.MediaColumns.MIME_TYPE,
    MediaStore.MediaColumns.ARTIST,
    MediaStore.MediaColumns.SIZE,
    MediaStore.MediaColumns.RELATIVE_PATH
)

contentResolver.query(
    targetMediaUri,
    projection,
    null,
    null,
    null
)?.use { cursor ->
    if (cursor.moveToFirst()) {
        // 从Cursor中按列名读取对应值
        val title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME))
        val mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.MIME_TYPE))
        val artist = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.ARTIST))
    }
}

常见问题说明

MediaStore 的 MediaColumns 类本身没有内置URI类型的列常量,这就是你之前找不到MediaStore.MediaColumns.URI的核心原因。MediaStore体系的所有标准内容URI,都是通过「MediaStore基础前缀 + 媒体条目_ID」拼接生成的,本身不需要从查询结果中反向读取。

  • 如果查询返回空Cursor,优先检查是否已授予对应存储权限,以及目标媒体文件是否已被媒体扫描收录到MediaStore数据库
  • 若需要读取更细粒度的EXIF参数(比如图片的拍摄设备、光圈值、白平衡参数),可在拿到MediaStore返回的文件绝对路径后,通过ExifInterface类读取,无需走MediaStore查询链路
  • 如果是跨应用通过SAF授权拿到的非MediaStore前缀的content URI,可通过DocumentsContract解析对应元数据,和本方案逻辑不同

内容的提问来源于stack exchange,提问作者Sourav Kannantha B

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 06:15:03