文档章节

Android MIME类型

竹草席
 竹草席
发布于 2015/06/26 01:21
字数 471
阅读 304
收藏 11

Java代码 

 /**
 * 打开文件
 * @param file
 */ 
private void openFile(File file){ 
     
    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);     //这里最好try一下,有可能会报错。 //比如说你的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++){ //MIME_MapTable??在这里你一定有疑问,这个MIME_MapTable是什么? 
        if(end.equals(MIME_MapTable[i][0])) 
            type = MIME_MapTable[i][1]; 
    }        
    return type; 

 
 
 
 
 
 
 
 MIME_MapTable是所有文件的后缀名所对应的MIME类型的一个String数组:
 
Java代码  <span style="white-space: pre;">    </span>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"}, 
            {".docx",   "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, 
            {".xls",    "application/vnd.ms-excel"},  
            {".xlsx",   "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, 
            {".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"}, 
            {".pptx",   "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, 
            {".prop",   "text/plain"}, 
            {".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/plain"}, 
            {".z",  "application/x-compress"}, 
            {".zip",    "application/x-zip-compressed"}, 
            {"",        "*/*"}   
        }; 

© 著作权归作者所有

共有 人打赏支持
竹草席
粉丝 1
博文 44
码字总数 2945
作品 0
兰州
Android Intent 深入理解

什么是Intent Intent是一种运行时绑定(run-time binding)机制,它能在程序运行过程中连接两个不同的组件。通过Intent,你的程序可以向Android表达某种请求或者意愿,Android会根据意愿的内...

learn_more
2015/02/04
0
0
今天把疯狂的Android 的 Intent(意图) 这章看了。总结了一些知识点

Intent --- 表达自己的意图 通过 Intent 可以启动 (activity、service、BroadcastReceiver) Intent 是程序组件之间通信的重要媒介 一个Intent 对象只能包含一个Action Intent属性:Compone...

Q_z
2014/11/12
0
0
android 默认浏览器 无法下载,此手机不支持此内容(自定义文件or APK文件看过了)

如果你是apk或者android系统可以识别的问题,那么一定是服务器MIME文件类型没有配置正确 APK文件配置如下: <mime-mapping> </mime-mapping> 其他文件请参考MIME配置对照表 下面是android不能...

补全
2014/01/19
0
0
创建ContentProvider的详细步骤

Content Provider管理中央存储库的数据的访问, 你在Android程序中实现一个或者多个Provider, 连同清单文件中的元素. 其中一个类实现了ContentProvider子类, 这个子类是你的Provider和其他程序...

等待流星
2014/01/04
0
0
[Android] Intent对象

Intent对象-Intent Objects Intent本 身是一个消息的集合。他包含那些传递给接收Intent的组件的信息(such as the action to be taken and the data to act on)和传递给Android系统的信息(...

枫兮兮
2014/02/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

arts-week10

Algorithm 905. Sort Array By Parity - LeetCode Review Who’s Afraid of the Big Bad Preloader? 一文读懂前端缓存 一个网络请求3个步骤:请求,处理,响应,而前端缓存主要在请求处响应这两步...

yysue
今天
0
0
00.编译OpenJDK-8u40的整个过程

前言 历经2天的折腾总算把OpenJDK给编译成功了,要说为啥搞这个,还得从面试说起,最近出去面试经常被问到JVM的相关东西,总感觉自己以前学的太浅薄,所以回来就打算深入学习,目标把《深入理...

凌晨一点
今天
5
0
python: 一些关于元组的碎碎念

初始化元组的时候,尤其是元组里面只有一个元素的时候,会出现一些很蛋疼的情况: def checkContentAndType(obj): print(obj) print(type(obj))if __name__=="__main__": tu...

Oh_really
昨天
6
2
jvm crash分析工具

介绍一款非常好用的jvm crash分析工具,当jvm挂掉时,会产生hs_err_pid.log。里面记录了jvm当时的运行状态以及错误信息,但是内容量比较庞大,不好分析。所以我们要借助工具来帮我们。 Cras...

xpbob
昨天
136
0
Qt编写自定义控件属性设计器

以前做.NET开发中,.NET直接就集成了属性设计器,VS不愧是宇宙第一IDE,你能够想到的都给你封装好了,用起来不要太爽!因为项目需要自从全面转Qt开发已经6年有余,在工业控制领域,有一些应用...

飞扬青云
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部