Android 中文件类型与MIME的匹配表

来源:互联网 发布:淘宝开虚拟店怎么样 编辑:程序博客网 时间:2024/06/07 06:52

背景介绍:

MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务。它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。

在Android中通过文件的MIME类型来判断有哪些应用程序可以处理这些文件,并使用其中的某一个应用程序(如果有多个可选的应用程序,则用户必须指定一个)处理之。

我在写android资源管理器(文件浏览器)的时候,希望能在资源管理器的中实现打开文件的操作,此时就需要用到文件的MIME类型。

---------------------------------------- 背景分割线 -----------------------------------------

实现方法:

/**
 * 根据文件后缀名获得对应的MIME类型。
 * @param file
 */
private String getMIMEType(File file)
{
    String type="*/*";
    String fName=file.getName();
    //获取后缀名前的分隔符"."在fName中的位置。
    int dotIndex = fName.lastIndexOf(".");
    if(dotIndex < 0){
        return type;
    }
    /* 获取文件的后缀名 */
    String end=fName.substring(dotIndex,fName.length()).toLowerCase();
    if(end=="")return type;
    //在MIME和文件类型的匹配表中找到对应的MIME类型。
    for(int i=0;i<MIME_MapTable.length;i++){
        if(end.equals(MIME_MapTable[i][0]))
            type = MIME_MapTable[i][1];
    }
    return type;
}
/**
 * 打开文件
 * @param file
 */
private void openFile(File file){
    //Uri uri = Uri.parse("file://"+file.getAbsolutePath());
    Intent intent = new Intent();
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    //设置intent的Action属性
    intent.setAction(Intent.ACTION_VIEW);
    //获取文件file的MIME类型
    String type = getMIMEType(file);
    //设置intent的data和Type属性。
    intent.setDataAndType(/*uri*/Uri.fromFile(file), type);
    //跳转
    startActivity(intent);    
}

现在就差一个MIME类型和文件类型的匹配表了。

"文件类型——MIME类型"的匹配表:

//建立一个MIME类型与文件后缀名的匹配表
private final String[][] MIME_MapTable={
    //{后缀名,    MIME类型}
    {".3gp",    "video/3gpp"},
    {".apk",    "application/vnd.android.package-archive"},
    {".asf",    "video/x-ms-asf"},
    {".avi",    "video/x-msvideo"},
    {".bin",    "application/octet-stream"},
    {".bmp",      "image/bmp"},
    {".c",        "text/plain"},
    {".class",    "application/octet-stream"},
    {".conf",    "text/plain"},
    {".cpp",    "text/plain"},
    {".doc",    "application/msword"},
    {".exe",    "application/octet-stream"},
    {".gif",    "image/gif"},
    {".gtar",    "application/x-gtar"},
    {".gz",        "application/x-gzip"},
    {".h",        "text/plain"},
    {".htm",    "text/html"},
    {".html",    "text/html"},
    {".jar",    "application/java-archive"},
    {".java",    "text/plain"},
    {".jpeg",    "image/jpeg"},
    {".jpg",    "image/jpeg"},
    {".js",        "application/x-javascript"},
    {".log",    "text/plain"},
    {".m3u",    "audio/x-mpegurl"},
    {".m4a",    "audio/mp4a-latm"},
    {".m4b",    "audio/mp4a-latm"},
    {".m4p",    "audio/mp4a-latm"},
    {".m4u",    "video/vnd.mpegurl"},
    {".m4v",    "video/x-m4v"},    
    {".mov",    "video/quicktime"},
    {".mp2",    "audio/x-mpeg"},
    {".mp3",    "audio/x-mpeg"},
    {".mp4",    "video/mp4"},
    {".mpc",    "application/vnd.mpohun.certificate"},        
    {".mpe",    "video/mpeg"},    
    {".mpeg",    "video/mpeg"},    
    {".mpg",    "video/mpeg"},    
    {".mpg4",    "video/mp4"},    
    {".mpga",    "audio/mpeg"},
    {".msg",    "application/vnd.ms-outlook"},
    {".ogg",    "audio/ogg"},
    {".pdf",    "application/pdf"},
    {".png",    "image/png"},
    {".pps",    "application/vnd.ms-powerpoint"},
    {".ppt",    "application/vnd.ms-powerpoint"},
    {".prop",    "text/plain"},
    {".rar",    "application/x-rar-compressed"},
    {".rc",        "text/plain"},
    {".rmvb",    "audio/x-pn-realaudio"},
    {".rtf",    "application/rtf"},
    {".sh",        "text/plain"},
    {".tar",    "application/x-tar"},    
    {".tgz",    "application/x-compressed"}, 
    {".txt",    "text/plain"},
    {".wav",    "audio/x-wav"},
    {".wma",    "audio/x-ms-wma"},
    {".wmv",    "audio/x-ms-wmv"},
    {".wps",    "application/vnd.ms-works"},
    //{".xml",    "text/xml"},
    {".xml",    "text/plain"},
    {".z",        "application/x-compress"},
    {".zip",    "application/zip"},
    {"",        "*/*"}    
};
这个表目前还不全,上面的只是一些常用的文件类型,对于其他的文件类型和MIME的匹配值我会在以后更新。
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 cd光盘读不出来怎么办 最近脸干的不行怎么办 脸感觉干的不行怎么办 新生儿睡觉黑白颠倒了怎么办 婴儿吐水和奶花怎么办 刚刚出生的宝宝拉肚子怎么办 刚出生的婴儿拉肚子怎么办 新生儿5天拉稀水怎么办 10个月孩子拉肚子怎么办 不满月的宝宝拉肚子怎么办 一周岁宝宝发烧腹泻呕吐怎么办 6个月宝宝37度怎么办 1岁宝宝发烧37.2怎么办 新生儿发烧37度3怎么办 两个月宝宝抵抗力差怎么办 6月宝宝着凉拉稀怎么办 六个月的宝宝拉肚子怎么办 衣服颜色太深了怎么办 一多半宝宝爱喝水不爱吃饭怎么办 十个月宝宝不爱吃饭怎么办 十个月宝宝突然不爱吃饭怎么办 二十个月宝宝不爱吃饭怎么办 十个月的宝宝不爱吃饭怎么办 6年级学生数学差怎么办 打印机打不出来就是一张白纸怎么办 wps表格下拉数字不递增怎么办 wps表格圈怎么打出来怎么办 手表固定圈掉了怎么办 起来觉得头晕头胀怎么办? 孩子不好好写作业怎么办 孩子考试考差了怎么办 孩子计算题马虎大意怎么办 二年级孩子不认字怎么办 发现计算上的错误怎么办 孩子不好好做作业怎么办 手破了红肿了怎么办呢 老师反应孩子在校粗心胆小怎么办 四年级的学生计算粗心怎么办 老打孩子骂孩子怎么办 站久了脚肿了怎么办 孩子初中了书写越来越潦草怎么办