前言

Android 13的MediaProvider中有涉及到getMimeTypeFromExtension()的使用,主要是获取文件的MimeType属性。

记录于此,方便自己差异。

下面代码来自MediaProvider

正文

获取mimeType

//获取文件后缀扩展
String extension = extractFileExtension("/sdcard/91es.m4a");
//根据后缀进行获取mimeType
if (null != extension) {
    String mimeType =   MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension.toLowerCase(Locale.ROOT));
}
  1. extractFileExtension()方法是获取文件后缀

  2. getMimeTypeFromExtension()根据文件后缀获取文件mimeType

extractFileExtension
public String extractFileExtension(String data) {
    if (data == null) return null;
    data = extractDisplayName(data);
    int lastDot = -1;
    if (null != data) {
        lastDot = data.lastIndexOf('.');
    }
    if (lastDot == -1) {
        return null;
    } else {
        return data.substring(lastDot + 1);
    }
}
extractDisplayName()
public String extractDisplayName(String data) {
    if (data == null) return null;
    if (data.indexOf('/') == -1) {
        return data;
    }
    if (data.endsWith("/")) {
        data = data.substring(0, data.length() - 1);
    }
    return data.substring(data.lastIndexOf('/') + 1);
}

测试

extension : mp4
mimeType : video/mp4

extension : mpeg
mimeType : video/mpeg

extension : ra
mimeType : audio/x-pn-realaudio

extension : wma
mimeType : audio/x-ms-wma

extension : wav
mimeType : audio/x-wav

extension : ape
mimeType : null

extension : m4a
mimeType : audio/mpeg

extension : txt
mimeType : text/plain

代码

整合一下,显示自己模块中使用的代码

隐藏内容!
评论后才能查看!

参考文章

  1. 《MediaProvider源码》

相关文章

暂无评论

none
暂无评论...