Android打开各种类型的文件方法总结
很简单,通过调用系统的intent,我们可以打开各种文件,不熟悉的朋友可以了解下action、datatype、uri的相关知识。
通用方法如下:
- public static Intent openFile(String filePath){
- File file = new File(filePath);
- if(!file.exists()) return null;
- /* 取得扩展名 */
- String end=file.getName().substring(file.getName().lastIndexOf(".") + 1,file.getName().length()).toLowerCase();
- /* 依扩展名的类型决定MimeType */
- if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")||
- end.equals("xmf")||end.equals("ogg")||end.equals("wav")){
- return getAudioFileIntent(filePath);
- }else if(end.equals("3gp")||end.equals("mp4")){
- return getAudioFileIntent(filePath);
- }else if(end.equals("jpg")||end.equals("gif")||end.equals("png")||
- end.equals("jpeg")||end.equals("bmp")){
- return getImageFileIntent(filePath);
- }else if(end.equals("apk")){
- return getApkFileIntent(filePath);
- }else if(end.equals("ppt")){
- return getPptFileIntent(filePath);
- }else if(end.equals("xls")){
- return getExcelFileIntent(filePath);
- }else if(end.equals("doc")){
- return getWordFileIntent(filePath);
- }else if(end.equals("pdf")){
- return getPdfFileIntent(filePath);
- }else if(end.equals("chm")){
- return getChmFileIntent(filePath);
- }else if(end.equals("txt")){
- return getTextFileIntent(filePath,false);
- }else{
- return getAllIntent(filePath);
- }
- }
- //Android获取一个用于打开APK文件的intent
- public static Intent getAllIntent( String param ) {
- Intent intent = new Intent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setAction(android.content.Intent.ACTION_VIEW);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri,"*/*");
- return intent;
- }
- //Android获取一个用于打开APK文件的intent
- public static Intent getApkFileIntent( String param ) {
- Intent intent = new Intent();
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- intent.setAction(android.content.Intent.ACTION_VIEW);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri,"application/vnd.android.package-archive");
- return intent;
- }
- //Android获取一个用于打开VIDEO文件的intent
- public static Intent getVideoFileIntent( String param ) {
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.putExtra("oneshot", 0);
- intent.putExtra("configchange", 0);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "video/*");
- return intent;
- }
- //Android获取一个用于打开AUDIO文件的intent
- public static Intent getAudioFileIntent( String param ){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- intent.putExtra("oneshot", 0);
- intent.putExtra("configchange", 0);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "audio/*");
- return intent;
- }
- //Android获取一个用于打开Html文件的intent
- public static Intent getHtmlFileIntent( String param ){
- Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param ).build();
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.setDataAndType(uri, "text/html");
- return intent;
- }
- //Android获取一个用于打开图片文件的intent
- public static Intent getImageFileIntent( String param ) {
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "image/*");
- return intent;
- }
- //Android获取一个用于打开PPT文件的intent
- public static Intent getPptFileIntent( String param ){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
- return intent;
- }
- //Android获取一个用于打开Excel文件的intent
- public static Intent getExcelFileIntent( String param ){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "application/vnd.ms-excel");
- return intent;
- }
- //Android获取一个用于打开Word文件的intent
- public static Intent getWordFileIntent( String param ){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "application/msword");
- return intent;
- }
- //Android获取一个用于打开CHM文件的intent
- public static Intent getChmFileIntent( String param ){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "application/x-chm");
- return intent;
- }
- //Android获取一个用于打开文本文件的intent
- public static Intent getTextFileIntent( String param, boolean paramBoolean){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- if (paramBoolean){
- Uri uri1 = Uri.parse(param );
- intent.setDataAndType(uri1, "text/plain");
- }else{
- Uri uri2 = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri2, "text/plain");
- }
- return intent;
- }
- //Android获取一个用于打开PDF文件的intent
- public static Intent getPdfFileIntent( String param ){
- Intent intent = new Intent("android.intent.action.VIEW");
- intent.addCategory("android.intent.category.DEFAULT");
- intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- Uri uri = Uri.fromFile(new File(param ));
- intent.setDataAndType(uri, "application/pdf");
- return intent;
- }
来自:http://blog.csdn.net/eclipsexys/article/details/39552501
Android打开各种类型的文件方法总结的更多相关文章
- Android 各种MIME类型和文件类型的匹配表
MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务.它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后 ...
- Intent MIME 打开各种类型的文件
使用 public class MainActivity extends ListActivity { public static final String path = Environmen ...
- Android || IOS录制mp3语音文件方法
Android Android Supported Media Formats : http://developer.android.com/guide/appendix/media-formats. ...
- 高速在MyEclipse中打开jsp类型的文件
MyEclipse打开jsp时老是要等上好几秒,嗯嗯,这个问题的确非常烦人,事实上都是MyEclipse的"自作聪明"的结果(它默认用Visual Designer来打开的),进行 ...
- Linux-各种姿势(less\vi等)打开各种类型的文件(txt/csv/xlsx等)出现不能打开(全乱码、部分乱码、二进制文件等)的问题
(一)linux各种中文乱码解决办法整理 远程登录服务器用vim在终端下编辑查看文件经常会遇见各种中文乱码问题. 做如下设置可基本解决vim中文乱码问题,首先查看系统对中文的支持locale -a | ...
- 用Linux命令行实现删除和复制指定类型的文件
(一)Linux 删除当前目录及子目录中所有某种类型的文件 方法1 : 此方法不能处理目录中带空格的那些. rm -rf `find . -name "*.example"` Li ...
- 笔记-Android中打开各种格式的文件(apk、word、excel、ppt、pdf、音视频、图片等)
打开后缀.apk的文件.即启动安装程序. //apkFilePath 文件路径 public void installAPK(String apkFilePath) { // 创建URI Uri ur ...
- Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)
Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...
- android 打开各种文件(setDataAndType)转:
android 打开各种文件(setDataAndType) 博客分类: android-->非界面 android 打开各种文件 setDataAndType action动作 转自:htt ...
随机推荐
- [CF528D]Fuzzy Seach
Description: 有两个基因串S和T,他们只包含AGCT四种字符.现在你要找出T在S中出现了几次. 有一个门限值k≥0.T在S的第i(1≤i≤|S|-|T|+1)个位置中出现的条件如下:把T的 ...
- C#文件及数据流技术
空间名称:Sysytem.IO 一.文件.文件夹操作1.创建.删除.移动.复制文件 2.创建.删除.移动.复制文件夹 二.流操作 1.FileSream - 提供读取和写入文件的方式 文本文件的写入与 ...
- BZOJ2268 : Wormly
考虑头部,一定是能向前就向前,因此是最左边的腿往右$b-1$个位置. 头部移动之后,腿部就要相应地移动到区间内最靠右的$l$个$1$之上. 若头部和腿部都不能移动,检查是否到达终点即可. 用前缀和以及 ...
- 使用itchat实现一个微信机器人聊天回复功能
近看到好多群里都有一个@机器人的功能,挺有趣的,想自己也玩下,就通过百度一点点实现,在这总结一下整个从无到有的过程. 首先,要知道itchat,它是Python写的,所以想要实现这个机器人的功能,需要 ...
- 【数论&想法题】小C的问题 @"科林明伦杯"哈尔滨理工大学第八届程序设计竞赛
Time Limit: 1000 MS Memory Limit: 256000 K Description 小C是一个可爱的女孩,她特别喜欢世界上最稳定的图形:三角形.有一天她得到了n根木棍,她把这 ...
- Spring mvc前台后台传值
前台向后台传值: ①同名参数传递:form表单中提交input,Controller方法入参中,直接以同名参数获取 ②不同名参数传递:from表单提交input,Controller方法入参中需要使用 ...
- 12、mysql补充
本篇导航: 视图 触发器 事务 存储过程 函数 流程控制 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可 ...
- .NET上传大文件时提示Maximum request length exceeded错误的解决方法
使用IIS托管应用程序时,当我们需要上传大文件(4MB以上)时,应用程序会提示Maximum request length exceeded的错误信息.该错误信息的翻译:超过最大请求长度. 解决方法: ...
- js实现图片旋转
1.以下代码适用ie9版本 js代码如下: function rotate(o,p){ var img = document.getElementById(o); if(!img || !p) ret ...
- commit 冲突
git status or repo sync . 时看到如下的提示: error: packages/apps/app/: branch alpha is published (but not me ...