`
gybin
  • 浏览: 270121 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

 
阅读更多

背景介绍:

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的匹配值我会在以后更新。
分享到:
评论

相关推荐

    Android中调用系统所装的软件打开文件

    `getMIMEType`方法通过遍历预定义的MIME类型映射表(`MIME_MapTable`)来查找与文件后缀匹配的MIME类型。映射表是一个二维字符串数组,包含各种文件扩展名及其对应的MIME类型。例如,".jpg"对应"image/jpeg",".docx...

    android用遍历删除指定类型的文件

    它会遍历该目录下的所有文件,如果文件的扩展名与给定的任何一种类型匹配,就删除它。对于每个子目录,函数会递归调用自身,继续遍历。 为了安全起见,通常需要在应用中添加权限声明,如`&lt;uses-permission android:...

    Android文件管理器源码

    《Android文件管理器源码详解》 在移动设备操作系统领域,Android以其开源、灵活的特点深受开发者喜爱。在Android开发中,文件管理是一个重要的部分,它涉及到用户数据的存储、访问和操作。本篇文章将深入探讨一个...

    android打开各种文件

    在Android系统中,打开各种类型的文件是一个常见的需求,这涉及到Android的Intent机制和文件操作。本文将详细讲解如何使用Android代码来实现根据文件类型自动打开相应应用程序的功能。 首先,理解Android的Intent是...

    android文件选择器

    Android文件选择器的设计和实现涉及到多个技术点,包括文件系统的访问、UI设计、多选机制、权限管理等。下面我们将详细探讨这些知识点。 1. **文件系统的访问**: 在Android中,文件存储分为多种类型,如内部存储...

    个人写的Android文件浏览器源码

    7. **文件过滤**:根据文件类型或扩展名筛选显示的文件,可以使用`MIME`类型或者简单的字符串匹配。 8. **文件夹导航**:实现面包屑导航,允许用户轻松返回上级目录。 9. **文件预览**:对于图片、文本等常见类型...

    Android 小米文件管理器源码.rar

    小米文件管理器源码中,文件被按照类型(如图片、视频、文档等)进行分类,这涉及到文件类型的识别,通常是通过MIME类型或文件扩展名来完成。同时,源码中还会有目录树的构建和缓存策略,以提高文件浏览的效率。 ...

    Android文件管理器源码!

    例如,根据文件类型(如图片、音频、视频、文档)对文件进行分类,可以利用MIME类型来识别。排序功能可能允许用户按文件名、大小、修改时间等标准对文件进行升序或降序排列。文件搜索功能则需要遍历文件系统,匹配...

    Android实例一:文件搜索

    在Android开发中,文件搜索是一项基础且重要的功能,它允许用户在设备上快速找到...通过以上步骤,我们可以构建一个基本的Android文件搜索功能。记住,为了用户体验,还需考虑错误处理、用户交互优化和性能调优等细节。

    调用系统文件管理器

    在Android开发中,有时我们需要集成应用的功能,使得用户...通过以上步骤,你可以实现从你的Android应用中调用系统文件管理器,让用户在你的应用中无缝地与文件系统交互。这不仅提高了用户体验,还简化了应用的复杂性。

    文件类型判断java

    在IT行业中,文件类型的判断是常见的操作,尤其是在服务器与客户端之间传输文件时。Java作为一种广泛应用于服务器端开发的语言,提供了多种方法来识别文件的真实类型,尤其是当文件后缀名不可靠或者缺失时。本篇文章...

    android中activity可以响应外部的action的例子(可以用这个来导入外部文件)

    在Android系统中,Activity是应用程序的基本组件,它负责与用户交互并执行特定任务。当我们谈论“activity可以响应外部的action”时,这是Android中的Intent机制在起作用。Intent是一种消息对象,用于在组件之间传递...

    Android iconFile带图标的文件资源管理器.zip

    Android提供了MimeUtil类和MimeTypeMap接口来获取文件的MIME类型,然后根据类型匹配相应的图标。 最后,为了使应用能够读取外部存储(如SD卡),需要在AndroidManifest.xml中添加读写权限声明,如 `...

    Android iconFile带图标的文件资源管理器.rar

    在Android开发中,创建一个带有图标的文件资源管理器是一项常见的任务,这有助于提升用户体验,使用户能够更直观地识别不同类型的文件。"Android iconFile带图标的文件资源管理器.rar"是一个包含源码的学习资源,它...

    android the file chooser manager

    这通常通过文件扩展名匹配或者MIME类型检查来实现。 3. **多选模式**:用户可以选择多个文件进行批量操作,如删除、复制、移动或分享。 4. **操作反馈**:文件选择后,管理器会提供相应的操作反馈,例如显示选定...

    Android中intent的使用

    - MIME Type:定义数据的MIME类型,用于匹配能处理该类型数据的组件。 - CATEGORY:定义Intent的类别,如CATEGORY_DEFAULT、CATEGORY_APP_MUSIC等,用于增加匹配组件的条件。 - Extras:额外的数据,可以使用Bundle...

    intent匹配规则大总结

    - 即使 `intent-filter` 中未指定具体的URI,只要定义了 MIME Type,且Intent中的URI为默认的 `content` 或 `file` 类型,仍然可以匹配成功。 8. **Type 的匹配**: - `intent-filter` 中定义了多个 `type`,而...

    MIUI文件管理 源码

    这部分涉及到文件扩展名的匹配和MIME类型识别。 9. **搜索功能**:源码中的搜索功能可能包括关键词匹配算法和实时索引构建,使得用户能快速找到所需文件。 10. **设置与个性化**:MIUI文件管理器允许用户自定义...

    Android 常用开发术语

    过滤器定义了一组匹配规则,如特定的动作、数据类型或MIME类型,帮助系统确定哪个组件最适合处理特定Intent。 #### 12. Intent接收器(Receiver) Intent接收器是一种专门监听和响应Broadcast Intent的组件。当...

    Delphi-XE5-开发 Android URI简介

    这通常涉及到在 AndroidManifest.xml 文件中添加 `&lt;provider&gt;` 标签,并设置相关的属性,如 `android:mimeType`、`android:path`、`android:pathPattern`、`android:pathPrefix` 和 `android:scheme` 等。...

Global site tag (gtag.js) - Google Analytics