很简单,通过调用系统的intent,我们可以打开各种文件,不熟悉的朋友可以了解下action、datatype、uri的相关知识。

通用方法如下:

  1. public static Intent openFile(String filePath){
  2.  
  3. File file = new File(filePath);
  4. if(!file.exists()) return null;
  5. /* 取得扩展名 */
  6. String end=file.getName().substring(file.getName().lastIndexOf(".") + 1,file.getName().length()).toLowerCase();
  7. /* 依扩展名的类型决定MimeType */
  8. if(end.equals("m4a")||end.equals("mp3")||end.equals("mid")||
  9. end.equals("xmf")||end.equals("ogg")||end.equals("wav")){
  10. return getAudioFileIntent(filePath);
  11. }else if(end.equals("3gp")||end.equals("mp4")){
  12. return getAudioFileIntent(filePath);
  13. }else if(end.equals("jpg")||end.equals("gif")||end.equals("png")||
  14. end.equals("jpeg")||end.equals("bmp")){
  15. return getImageFileIntent(filePath);
  16. }else if(end.equals("apk")){
  17. return getApkFileIntent(filePath);
  18. }else if(end.equals("ppt")){
  19. return getPptFileIntent(filePath);
  20. }else if(end.equals("xls")){
  21. return getExcelFileIntent(filePath);
  22. }else if(end.equals("doc")){
  23. return getWordFileIntent(filePath);
  24. }else if(end.equals("pdf")){
  25. return getPdfFileIntent(filePath);
  26. }else if(end.equals("chm")){
  27. return getChmFileIntent(filePath);
  28. }else if(end.equals("txt")){
  29. return getTextFileIntent(filePath,false);
  30. }else{
  31. return getAllIntent(filePath);
  32. }
  33. }
  34.  
  35. //Android获取一个用于打开APK文件的intent
  36. public static Intent getAllIntent( String param ) {
  37.  
  38. Intent intent = new Intent();
  39. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  40. intent.setAction(android.content.Intent.ACTION_VIEW);
  41. Uri uri = Uri.fromFile(new File(param ));
  42. intent.setDataAndType(uri,"*/*");
  43. return intent;
  44. }
  45. //Android获取一个用于打开APK文件的intent
  46. public static Intent getApkFileIntent( String param ) {
  47.  
  48. Intent intent = new Intent();
  49. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  50. intent.setAction(android.content.Intent.ACTION_VIEW);
  51. Uri uri = Uri.fromFile(new File(param ));
  52. intent.setDataAndType(uri,"application/vnd.android.package-archive");
  53. return intent;
  54. }
  55.  
  56. //Android获取一个用于打开VIDEO文件的intent
  57. public static Intent getVideoFileIntent( String param ) {
  58.  
  59. Intent intent = new Intent("android.intent.action.VIEW");
  60. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  61. intent.putExtra("oneshot", 0);
  62. intent.putExtra("configchange", 0);
  63. Uri uri = Uri.fromFile(new File(param ));
  64. intent.setDataAndType(uri, "video/*");
  65. return intent;
  66. }
  67.  
  68. //Android获取一个用于打开AUDIO文件的intent
  69. public static Intent getAudioFileIntent( String param ){
  70.  
  71. Intent intent = new Intent("android.intent.action.VIEW");
  72. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  73. intent.putExtra("oneshot", 0);
  74. intent.putExtra("configchange", 0);
  75. Uri uri = Uri.fromFile(new File(param ));
  76. intent.setDataAndType(uri, "audio/*");
  77. return intent;
  78. }
  79.  
  80. //Android获取一个用于打开Html文件的intent
  81. public static Intent getHtmlFileIntent( String param ){
  82.  
  83. Uri uri = Uri.parse(param ).buildUpon().encodedAuthority("com.android.htmlfileprovider").scheme("content").encodedPath(param ).build();
  84. Intent intent = new Intent("android.intent.action.VIEW");
  85. intent.setDataAndType(uri, "text/html");
  86. return intent;
  87. }
  88.  
  89. //Android获取一个用于打开图片文件的intent
  90. public static Intent getImageFileIntent( String param ) {
  91.  
  92. Intent intent = new Intent("android.intent.action.VIEW");
  93. intent.addCategory("android.intent.category.DEFAULT");
  94. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  95. Uri uri = Uri.fromFile(new File(param ));
  96. intent.setDataAndType(uri, "image/*");
  97. return intent;
  98. }
  99.  
  100. //Android获取一个用于打开PPT文件的intent
  101. public static Intent getPptFileIntent( String param ){
  102.  
  103. Intent intent = new Intent("android.intent.action.VIEW");
  104. intent.addCategory("android.intent.category.DEFAULT");
  105. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  106. Uri uri = Uri.fromFile(new File(param ));
  107. intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
  108. return intent;
  109. }
  110.  
  111. //Android获取一个用于打开Excel文件的intent
  112. public static Intent getExcelFileIntent( String param ){
  113.  
  114. Intent intent = new Intent("android.intent.action.VIEW");
  115. intent.addCategory("android.intent.category.DEFAULT");
  116. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  117. Uri uri = Uri.fromFile(new File(param ));
  118. intent.setDataAndType(uri, "application/vnd.ms-excel");
  119. return intent;
  120. }
  121.  
  122. //Android获取一个用于打开Word文件的intent
  123. public static Intent getWordFileIntent( String param ){
  124.  
  125. Intent intent = new Intent("android.intent.action.VIEW");
  126. intent.addCategory("android.intent.category.DEFAULT");
  127. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  128. Uri uri = Uri.fromFile(new File(param ));
  129. intent.setDataAndType(uri, "application/msword");
  130. return intent;
  131. }
  132.  
  133. //Android获取一个用于打开CHM文件的intent
  134. public static Intent getChmFileIntent( String param ){
  135.  
  136. Intent intent = new Intent("android.intent.action.VIEW");
  137. intent.addCategory("android.intent.category.DEFAULT");
  138. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  139. Uri uri = Uri.fromFile(new File(param ));
  140. intent.setDataAndType(uri, "application/x-chm");
  141. return intent;
  142. }
  143.  
  144. //Android获取一个用于打开文本文件的intent
  145. public static Intent getTextFileIntent( String param, boolean paramBoolean){
  146.  
  147. Intent intent = new Intent("android.intent.action.VIEW");
  148. intent.addCategory("android.intent.category.DEFAULT");
  149. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  150. if (paramBoolean){
  151. Uri uri1 = Uri.parse(param );
  152. intent.setDataAndType(uri1, "text/plain");
  153. }else{
  154. Uri uri2 = Uri.fromFile(new File(param ));
  155. intent.setDataAndType(uri2, "text/plain");
  156. }
  157. return intent;
  158. }
  159. //Android获取一个用于打开PDF文件的intent
  160. public static Intent getPdfFileIntent( String param ){
  161.  
  162. Intent intent = new Intent("android.intent.action.VIEW");
  163. intent.addCategory("android.intent.category.DEFAULT");
  164. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  165. Uri uri = Uri.fromFile(new File(param ));
  166. intent.setDataAndType(uri, "application/pdf");
  167. return intent;
  168. }

来自:http://blog.csdn.net/eclipsexys/article/details/39552501

Android打开各种类型的文件方法总结的更多相关文章

  1. Android 各种MIME类型和文件类型的匹配表

    MIME:全称Multipurpose Internet Mail Extensions,多功能Internet 邮件扩充服务.它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后 ...

  2. Intent MIME 打开各种类型的文件

    使用 public class MainActivity extends ListActivity {     public static final String path = Environmen ...

  3. Android || IOS录制mp3语音文件方法

    Android Android Supported Media Formats : http://developer.android.com/guide/appendix/media-formats. ...

  4. 高速在MyEclipse中打开jsp类型的文件

    MyEclipse打开jsp时老是要等上好几秒,嗯嗯,这个问题的确非常烦人,事实上都是MyEclipse的"自作聪明"的结果(它默认用Visual Designer来打开的),进行 ...

  5. Linux-各种姿势(less\vi等)打开各种类型的文件(txt/csv/xlsx等)出现不能打开(全乱码、部分乱码、二进制文件等)的问题

    (一)linux各种中文乱码解决办法整理 远程登录服务器用vim在终端下编辑查看文件经常会遇见各种中文乱码问题. 做如下设置可基本解决vim中文乱码问题,首先查看系统对中文的支持locale -a | ...

  6. 用Linux命令行实现删除和复制指定类型的文件

    (一)Linux 删除当前目录及子目录中所有某种类型的文件 方法1 : 此方法不能处理目录中带空格的那些. rm -rf `find . -name "*.example"` Li ...

  7. 笔记-Android中打开各种格式的文件(apk、word、excel、ppt、pdf、音视频、图片等)

    打开后缀.apk的文件.即启动安装程序. //apkFilePath 文件路径 public void installAPK(String apkFilePath) { // 创建URI Uri ur ...

  8. Android 打开方式选定后默认了改不回来?解决方法(三星s7为例)

    Android 打开方式选定后默认了改不回来?解决方法(三星s7为例) 刚刚在测试东西,打开一个gif图,然后我故意选择用支付宝打开,然后...支付宝当然不支持,我觉得第二次打开它应该还会问我,没想到 ...

  9. android 打开各种文件(setDataAndType)转:

    android 打开各种文件(setDataAndType) 博客分类: android-->非界面 android 打开各种文件 setDataAndType action动作  转自:htt ...

随机推荐

  1. [CF528D]Fuzzy Seach

    Description: 有两个基因串S和T,他们只包含AGCT四种字符.现在你要找出T在S中出现了几次. 有一个门限值k≥0.T在S的第i(1≤i≤|S|-|T|+1)个位置中出现的条件如下:把T的 ...

  2. C#文件及数据流技术

    空间名称:Sysytem.IO 一.文件.文件夹操作1.创建.删除.移动.复制文件 2.创建.删除.移动.复制文件夹 二.流操作 1.FileSream - 提供读取和写入文件的方式 文本文件的写入与 ...

  3. BZOJ2268 : Wormly

    考虑头部,一定是能向前就向前,因此是最左边的腿往右$b-1$个位置. 头部移动之后,腿部就要相应地移动到区间内最靠右的$l$个$1$之上. 若头部和腿部都不能移动,检查是否到达终点即可. 用前缀和以及 ...

  4. 使用itchat实现一个微信机器人聊天回复功能

    近看到好多群里都有一个@机器人的功能,挺有趣的,想自己也玩下,就通过百度一点点实现,在这总结一下整个从无到有的过程. 首先,要知道itchat,它是Python写的,所以想要实现这个机器人的功能,需要 ...

  5. 【数论&想法题】小C的问题 @"科林明伦杯"哈尔滨理工大学第八届程序设计竞赛

    Time Limit: 1000 MS Memory Limit: 256000 K Description 小C是一个可爱的女孩,她特别喜欢世界上最稳定的图形:三角形.有一天她得到了n根木棍,她把这 ...

  6. Spring mvc前台后台传值

    前台向后台传值: ①同名参数传递:form表单中提交input,Controller方法入参中,直接以同名参数获取 ②不同名参数传递:from表单提交input,Controller方法入参中需要使用 ...

  7. 12、mysql补充

    本篇导航: 视图 触发器 事务 存储过程 函数 流程控制 一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可 ...

  8. .NET上传大文件时提示Maximum request length exceeded错误的解决方法

    使用IIS托管应用程序时,当我们需要上传大文件(4MB以上)时,应用程序会提示Maximum request length exceeded的错误信息.该错误信息的翻译:超过最大请求长度. 解决方法: ...

  9. js实现图片旋转

    1.以下代码适用ie9版本 js代码如下: function rotate(o,p){ var img = document.getElementById(o); if(!img || !p) ret ...

  10. commit 冲突

    git status or repo sync . 时看到如下的提示: error: packages/apps/app/: branch alpha is published (but not me ...