文档章节

Android MIME类型

竹草席
 竹草席
发布于 2015/06/26 01:21
字数 471
阅读 522
收藏 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 开发访问 JAX-RS Web 服务的 Apache HttpClient 客户端

简介: 使用 Apache HttpClient 库访问 JAX-RS web 服务。Jersey 是 JAX-RS 的参考实现,它简化了 Java™ 环境下的 RESTful Web 服务的开发。Android 是一款流行的智能手机,本文将展示如何为...

IBMdW
2011/11/07
2.3K
3
AndroidManifest.xml文件详解(data)

语法(SYNTAX): 包含于(CONTAINED IN): 说明(DESCRIPTION): 这个元素用于把数据规范添加到一个Intent过滤器中,数据规范能够只是数据类型(mimeType属性)、或数据位置标识(URI),...

长平狐
2012/10/16
1.3K
0
【翻译】NFC近场通信

近场通信(NFC)是一组短距离的无线技术,典型地,需要距离为4cm或更短来初始化一个连接。NFC允许你在一个NFC标签和一个Android设备之间,或在两个Android设备之间共享有效载荷很小的数据。 标...

WolfCS
2013/11/24
4.7K
7
android_nfc

NFC简介 NFC(Near Field Communication)近距离通信技术 NFC允许在NFC标签和Android设备之间或两个Android设备之间共享小的数据的负载。 NFC标签 NFC标签具有复杂的分类。简单的NFC标签只提供...

huben99
2014/11/19
92
1
Intent机制详解

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

osc_dg21zk4i
06/20
4
0

没有更多内容

加载失败,请刷新页面

加载更多

依赖管理(二):第三方组件库在Flutter中要如何管理

前面的文章中,我介绍了Flutter工程的资源管理机制。在Flutter中,资源采用先声明后使用的机制,在pubspec.yaml显示地声明资源路径后,才可以使用。 对于图片,Flutter基于像素密度,设立不同...

拉维
2019/08/15
0
0
宝塔免费版Nginx防火墙插件来啦,wordpress站长建议开启

之前网上有很多的帖子说宝塔隐藏了免费的自带的防火墙工具,一般用户需要去手动设置和开启,不过纯小白操作还是有点儿麻烦,担心搞错或者不会操作,不过近期看到宝塔应用软件商店上架了一款免...

zouaw建站
2019/11/22
9
0
珍藏已久的 OS 学习网站拿出来分享给大家

点击蓝色“Java建设者”关注我哟 加个“星标”,欢迎来撩 这是程序员cxuan的第 14篇原创文章 平常经常看推荐各种资源教程的,感觉有很多文章稂莠不齐,这次我来推荐点硬核的网站,包你有收获...

cxuaner
05/29
0
0
彤哥说netty系列之IO的五种模型

你好,我是彤哥,本篇是netty系列的第二篇。 欢迎来我的公从号彤哥读源码系统地学习源码&架构的知识。 简介 本文将介绍linux中的五种IO模型,同时也会介绍阻塞/非阻塞与同步/异步的区别。 何...

彤哥读源码
2019/11/15
0
0
微信屏蔽推广网址的解决思路,微信域名防封技术的实现过程

为什么很多商家在微信封域名如此严格的情况下,还会挤破头皮去做微信营销和推广呢?因为微信营销推广的效率要高于其他社交平台太多,微信的流量裂变的速度也高于其他社交平台,故大家都蜂拥而...

戚馨逸
14分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部