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

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

阅读更多

在应用中如何调用系统所装的软件打开一个文件,这是我们经常碰到的问题,下面是我所用到的一种方法,和大家一起分享一下!



这个是打开文件的一个方法:

 

	/**
	 * 打开文件
	 * @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);	
		
	}

	/**
	 * 根据文件后缀名获得对应的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数组:

	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"},
			{"",		"*/*"}	
		};

 这个MIME类型可能不够完整,你有要补充的吗?

 

 

2
0
分享到:
评论
1 楼 SilEnt怪兽 2015-03-18  
我想打开 docx文件 可是 没有 ".docx",   "application/vnd.openxmlformats-officedocument.wordprocessingml.document" 后面这个应用, 程序报错,怎么破

相关推荐

    android调用系统内部打开word等文档

    总结一下,Android调用系统内部打开Word文档主要包括以下步骤:创建Intent、设置数据和类型、检查可用应用、处理权限以及可能需要使用FileProvider。理解这些知识点对于在Android应用中集成文档处理功能至关重要。

    android 调用WPS 打开文件

    android 系统调用WPS打开word excel ppt pdf 等,将代码类移入的你项目,有对6.0 7.0及以上系统做文件读取方法

    android 调用系统自带录音机

    2. **设置权限**:在AndroidManifest.xml文件中,确保添加了录音所需的权限: ```xml &lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&gt; ``` 这样你的应用才能访问麦克风进行录音。 3. **...

    Android7.0 Intent打开文件管理器 获取文件真实路径

    Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。

    android文件系统浏览器

    总的来说,Android文件系统浏览器是Android应用开发中的一个重要工具,它通过提供直观的界面和便捷的操作,帮助用户更好地管理和利用设备的存储空间。开发者在实现这一功能时,需要关注权限控制、文件操作以及用户...

    Android 调用WPS打开PPT

    在Android平台上,调用外部应用来打开特定类型的文件,如PPT,是常见的需求。...以上就是关于Android调用WPS打开PPT的基本步骤和知识点。在实际开发中,根据应用需求,你可能需要进一步定制和优化这些流程。

    一个打开文件目录操作的android程序

    综上所述,开发一个在Android上打开文件目录的操作程序涉及到的知识点包括:Android文件系统、`java.io.File`操作、`ListView`与`ArrayAdapter`、`Dialog`组件、权限管理、事件监听以及API兼容性处理。通过理解和...

    基于android的扫描手机中txt文件并打开文件

    在Android系统中,访问SD卡(外部存储)需要在`AndroidManifest.xml`文件中声明`READ_EXTERNAL_STORAGE`权限。自Android 6.0(API级别23)起,还必须在运行时请求权限。 2. **文件系统接口**: Android提供了`...

    Android快速查找手机文件内某种类型文件,可以调用系统自带工具打开文件

    在Android操作系统中,快速查找和打开特定类型的文件是一项常见的需求。Android系统提供了多种方式来实现这一功能,使得用户能够高效地管理手机上的文件。本文将详细介绍如何利用Android系统自带的工具来查找并打开...

    Unity调用Android文件资源管理选择文件

    Unity 调用Android文件资源管理器,可以选择Android手机上的图片,视频等一些列文件,并且获得相关的文件路径。直接导入Unity即可运行。测试已经通过

    Android-用于android中打开pdf文件

    在Android应用中,首先需要在项目中添加封装好的.jar库,并在Android.mk或build.gradle文件中配置对libmupdf.so库的依赖。接着,在Activity或Fragment中实例化这个库提供的类,通过调用其提供的方法来打开和显示PDF...

    android中打开office文件

    4. **调用API打开文件**:有了权限后,可以使用API提供的方法打开文件。这通常涉及到传入文件的URI或路径,以及可能的其他参数,如是否需要编辑。 **示例代码** 在`android打开office文件demo`中,可能包含了一个...

    android调用系统网络设置界面

    在AndroidManifest.xml文件中,调用系统网络设置界面并不需要特殊的权限,但是如果你的应用涉及到网络通信,那么可能需要添加`INTERNET`权限: ```xml &lt;uses-permission android:name="android.permission.INTERNET...

    android系统下载管理器下载文件并打开.rar

    在Android系统中,系统下载管理器(DownloadManager)是一个用于后台下载大文件的服务,它具有恢复下载、批量处理和通知用户等功能。这个压缩包“android系统下载管理器下载文件并打开.rar”似乎包含了一个名为...

    安卓掉用第三方软件打开文件

    通过以上步骤,你就掌握了在安卓应用中调用第三方软件打开文件的核心技术,并学会了如何封装这一功能以方便复用。这不仅提高了代码的可维护性,也简化了开发流程,使得在处理不同类型的文件时更加灵活。

    android 指定打开(存储)文件(夹)

    综上所述,"android 指定打开(存储)文件(夹)"这个程序利用了FireMonkey组件和Pascal编程,实现了自定义的文件选择对话框,同时考虑了Android的权限管理和跨平台兼容性问题,为其他应用程序提供了方便的文件操作...

    android打开各种文件

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

    Android调用系统程序

    以上就是关于Android调用系统程序的基本操作。在实际开发中,可能还需要处理权限问题,例如调用Wi-Fi设置可能需要ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限。此外,为了兼容不同版本的Android系统,可能...

Global site tag (gtag.js) - Google Analytics