首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中确定文件的MIME类型?

如何在android中确定文件的MIME类型?
EN

Stack Overflow用户
提问于 2011-12-21 20:13:03
回答 21查看 163.5K关注 0票数 202

假设我有一个完整的文件路径,比如:(/sdcard/tlogo.png)。我想知道它的mime类型。

我为它创建了一个函数

代码语言:javascript
复制
public static String getMimeType(File file, Context context)    
{
    Uri uri = Uri.fromFile(file);
    ContentResolver cR = context.getContentResolver();
    MimeTypeMap mime = MimeTypeMap.getSingleton();
    String type = mime.getExtensionFromMimeType(cR.getType(uri));
    return type;
}

但是当我调用它时,它返回null。

代码语言:javascript
复制
File file = new File(filePath);
String fileType=CommonFunctions.getMimeType(file, context);
EN

回答 21

Stack Overflow用户

回答已采纳

发布于 2011-12-21 22:17:09

首先,您应该考虑调用MimeTypeMap#getMimeTypeFromExtension(),如下所示:

代码语言:javascript
复制
// url = file path or whatever suitable URL you want.
public static String getMimeType(String url) {
    String type = null;
    String extension = MimeTypeMap.getFileExtensionFromUrl(url);
    if (extension != null) {
        type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    }
    return type;
}
票数 358
EN

Stack Overflow用户

发布于 2013-01-13 10:17:43

上面的MimeTypeMap解决方案在我的使用中返回null。这是可行的,而且更容易:

代码语言:javascript
复制
Uri uri = Uri.fromFile(file);
ContentResolver cR = context.getContentResolver();
String mime = cR.getType(uri);
票数 36
EN

Stack Overflow用户

发布于 2014-01-14 21:49:34

代码语言:javascript
复制
File file = new File(path, name);

    MimeTypeMap mime = MimeTypeMap.getSingleton();
    int index = file.getName().lastIndexOf('.')+1;
    String ext = file.getName().substring(index).toLowerCase();
    String type = mime.getMimeTypeFromExtension(ext);

    intent.setDataAndType(Uri.fromFile(file), type);
    try
    {
      context.startActivity(intent);
    }
    catch(ActivityNotFoundException ex)
    {
        ex.printStackTrace();

    }
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8589645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档