在应用中如何调用系统所装的软件打开一个文件,这是我们经常碰到的问题,下面是我所用到的一种方法,和大家一起分享一下!
这个是打开文件的一个方法:
/**
* 打开文件
* @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类型可能不够完整,你有要补充的吗?
分享到:
相关推荐
总结一下,Android调用系统内部打开Word文档主要包括以下步骤:创建Intent、设置数据和类型、检查可用应用、处理权限以及可能需要使用FileProvider。理解这些知识点对于在Android应用中集成文档处理功能至关重要。
android 系统调用WPS打开word excel ppt pdf 等,将代码类移入的你项目,有对6.0 7.0及以上系统做文件读取方法
2. **设置权限**:在AndroidManifest.xml文件中,确保添加了录音所需的权限: ```xml <uses-permission android:name="android.permission.RECORD_AUDIO" /> ``` 这样你的应用才能访问麦克风进行录音。 3. **...
Android7.0 Intent打开文件管理器 获取文件真实路径。虽然网上很多demo,但是没有一个能够兼容所有Android机的,去网上学习了然后自己亲测过手机分别有Android7.0/6.0/4.3个版本。
总的来说,Android文件系统浏览器是Android应用开发中的一个重要工具,它通过提供直观的界面和便捷的操作,帮助用户更好地管理和利用设备的存储空间。开发者在实现这一功能时,需要关注权限控制、文件操作以及用户...
在Android平台上,调用外部应用来打开特定类型的文件,如PPT,是常见的需求。...以上就是关于Android调用WPS打开PPT的基本步骤和知识点。在实际开发中,根据应用需求,你可能需要进一步定制和优化这些流程。
综上所述,开发一个在Android上打开文件目录的操作程序涉及到的知识点包括:Android文件系统、`java.io.File`操作、`ListView`与`ArrayAdapter`、`Dialog`组件、权限管理、事件监听以及API兼容性处理。通过理解和...
在Android系统中,访问SD卡(外部存储)需要在`AndroidManifest.xml`文件中声明`READ_EXTERNAL_STORAGE`权限。自Android 6.0(API级别23)起,还必须在运行时请求权限。 2. **文件系统接口**: Android提供了`...
在Android操作系统中,快速查找和打开特定类型的文件是一项常见的需求。Android系统提供了多种方式来实现这一功能,使得用户能够高效地管理手机上的文件。本文将详细介绍如何利用Android系统自带的工具来查找并打开...
Unity 调用Android文件资源管理器,可以选择Android手机上的图片,视频等一些列文件,并且获得相关的文件路径。直接导入Unity即可运行。测试已经通过
在Android应用中,首先需要在项目中添加封装好的.jar库,并在Android.mk或build.gradle文件中配置对libmupdf.so库的依赖。接着,在Activity或Fragment中实例化这个库提供的类,通过调用其提供的方法来打开和显示PDF...
4. **调用API打开文件**:有了权限后,可以使用API提供的方法打开文件。这通常涉及到传入文件的URI或路径,以及可能的其他参数,如是否需要编辑。 **示例代码** 在`android打开office文件demo`中,可能包含了一个...
在AndroidManifest.xml文件中,调用系统网络设置界面并不需要特殊的权限,但是如果你的应用涉及到网络通信,那么可能需要添加`INTERNET`权限: ```xml <uses-permission android:name="android.permission.INTERNET...
在Android系统中,系统下载管理器(DownloadManager)是一个用于后台下载大文件的服务,它具有恢复下载、批量处理和通知用户等功能。这个压缩包“android系统下载管理器下载文件并打开.rar”似乎包含了一个名为...
通过以上步骤,你就掌握了在安卓应用中调用第三方软件打开文件的核心技术,并学会了如何封装这一功能以方便复用。这不仅提高了代码的可维护性,也简化了开发流程,使得在处理不同类型的文件时更加灵活。
综上所述,"android 指定打开(存储)文件(夹)"这个程序利用了FireMonkey组件和Pascal编程,实现了自定义的文件选择对话框,同时考虑了Android的权限管理和跨平台兼容性问题,为其他应用程序提供了方便的文件操作...
在Android系统中,打开各种类型的文件是一个常见的需求,这涉及到Android的Intent机制和文件操作。本文将详细讲解如何使用Android代码来实现根据文件类型自动打开相应应用程序的功能。 首先,理解Android的Intent是...
以上就是关于Android调用系统程序的基本操作。在实际开发中,可能还需要处理权限问题,例如调用Wi-Fi设置可能需要ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION权限。此外,为了兼容不同版本的Android系统,可能...