首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android MediaStore MIME 類型映射表:文件後綴決定 MIME,掃描時自動寫入

     編輯:程式設計綜合問答

結論先行

Android 多媒體數據庫 MediaStore 掃描文件時,**MIME Type 由文件後綴名通過內置映射表決定**,寫入 MediaStore.Files.FileColumns.MIME_TYPE 列。無後綴或未知後綴回退 "*/*"。

核心映射表(AOSP 來源:MimeTypeMap.java)

後綴MIME後綴MIME
.3gpvideo/3gpp.apkapplication/vnd.android.package-archive
.mp3audio/mpeg.mp4video/mp4
.jpg/.jpegimage/jpeg.pngimage/png
.gifimage/gif.wavaudio/x-wav
.pdfapplication/pdf.txttext/plain
.zipapplication/zip.rarapplication/x-rar-compressed
.html/.htmtext/html.jsapplication/javascript
.xmltext/plain(其餘)*/*

完整表見 frameworks/base/core/java/android/webkit/MimeTypeMap.java 的 sMimeTypes 靜態映射。

掃描流程源碼追蹤

// MediaScanner.scanFile()
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext);
if (mime == null) mime = "*/*";
values.put(MediaStore.MediaColumns.MIME_TYPE, mime);

開發者常見操作

  • 手動插入文件:ContentValues.put(MediaStore.MediaColumns.MIME_TYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(ext))
  • 獲取 MIME:MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExt)
  • 擴展映射:不可直接修改系統表,需自行維护 Map<String, String> 兜底

坑點提醒

  1. 大小寫不敏感:.JPG、.jpg 同樣匹配
  2. 無後綴文件:MimeTypeMap 返回 null,需自行兜底 "*/*"
  3. 雙後綴(如 .tar.gz)只識別最後一段 .gz
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved