android intent打开各种格式文档方法

举报
再见孙悟空_ 发表于 2022/01/12 23:29:03 2022/01/12
【摘要】 我们开发的时候经常碰到打开各种文档,目前的应用处理方式 基本都是依赖于三方软件打开 ,而不是在应用内打开,因为文件格式有很多,倘若都在应用内打开的话,肯定要增加很大的开发时间和开发成本,而且实现效果没有一些三方的app实现的效果好。 话不多说,贴上代码 工具类 import java.io.File; import and...

我们开发的时候经常碰到打开各种文档,目前的应用处理方式 基本都是依赖于三方软件打开 ,而不是在应用内打开,因为文件格式有很多,倘若都在应用内打开的话,肯定要增加很大的开发时间和开发成本,而且实现效果没有一些三方的app实现的效果好。

话不多说,贴上代码

工具类


  
  1. import java.io.File;
  2. import android.content.Intent;
  3. import android.net.Uri;
  4. /**
  5. * android Intent打开各种类型文件((PDF、word、excel、ppt、chm)
  6. */
  7. public class IntentDocumentView {
  8. // android获取一个用于打开PPT文件的intent
  9. public static Intent getPptFileIntent(String param) {
  10. Intent intent = new Intent("android.intent.action.VIEW");
  11. intent.addCategory("android.intent.category.DEFAULT");
  12. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  13. Uri uri = Uri.fromFile(new File(param));
  14. intent.setDataAndType(uri, "application/vnd.ms-powerpoint");
  15. return intent;
  16. }
  17. // android获取一个用于打开Excel文件的intent
  18. public static Intent getExcelFileIntent(String param) {
  19. Intent intent = new Intent("android.intent.action.VIEW");
  20. intent.addCategory("android.intent.category.DEFAULT");
  21. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  22. Uri uri = Uri.fromFile(new File(param));
  23. intent.setDataAndType(uri, "application/vnd.ms-excel");
  24. return intent;
  25. }
  26. // android获取一个用于打开Word文件的intent
  27. public static Intent getWordFileIntent(String param) {
  28. Intent intent = new Intent("android.intent.action.VIEW");
  29. intent.addCategory("android.intent.category.DEFAULT");
  30. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  31. Uri uri = Uri.fromFile(new File(param));
  32. intent.setDataAndType(uri, "application/msword");
  33. return intent;
  34. }
  35. // android获取一个用于打开CHM文件的intent
  36. public static Intent getChmFileIntent(String param) {
  37. Intent intent = new Intent("android.intent.action.VIEW");
  38. intent.addCategory("android.intent.category.DEFAULT");
  39. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  40. Uri uri = Uri.fromFile(new File(param));
  41. intent.setDataAndType(uri, "application/x-chm");
  42. return intent;
  43. }
  44. // android获取一个用于打开文本文件的intent
  45. public static Intent getTextFileIntent(String param, boolean paramBoolean) {
  46. Intent intent = new Intent("android.intent.action.VIEW");
  47. intent.addCategory("android.intent.category.DEFAULT");
  48. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  49. if (paramBoolean) {
  50. Uri uri1 = Uri.parse(param);
  51. intent.setDataAndType(uri1, "text/plain");
  52. } else {
  53. Uri uri2 = Uri.fromFile(new File(param));
  54. intent.setDataAndType(uri2, "text/plain");
  55. }
  56. return intent;
  57. }
  58. // android获取一个用于打开PDF文件的intent
  59. public static Intent getPdfFileIntent(String param) {
  60. Intent intent = new Intent("android.intent.action.VIEW");
  61. intent.addCategory("android.intent.category.DEFAULT");
  62. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  63. Uri uri = Uri.fromFile(new File(param));
  64. intent.setDataAndType(uri, "application/pdf");
  65. return intent;
  66. }
  67. // android获取一个用于打开图片文件的intent
  68. public static Intent getPicturefFileIntent(String param) {
  69. Intent intent = new Intent("android.intent.action.VIEW");
  70. intent.addCategory("android.intent.category.DEFAULT");
  71. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  72. Uri uri = Uri.fromFile(new File(param));
  73. intent.setDataAndType(uri, "image/*");
  74. return intent;
  75. }
  76. // android获取一个用于打开压缩包的intent (手机需安装能打开压缩文件的相关软件)
  77. public static Intent getZipRarFileIntent(String param) {
  78. Intent intent = new Intent("android.intent.action.VIEW");
  79. intent.addCategory("android.intent.category.DEFAULT");
  80. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  81. Uri uri = Uri.fromFile(new File(param));
  82. intent.setDataAndType(uri, "application/x-gzip");
  83. return intent;
  84. }
  85. }

上面这个是核心的工具类,就是打开各种文档的跳转写法,然后在对应的点击事件调用 就可以,举列


  
  1. protected void openFile(String path) {
  2. String format = path.substring(path.lastIndexOf(".") + 1);
  3. File file = new File(path);
  4. try {
  5. if (file.exists() || FileUtil.fileAvailable(file)) {
  6. if (TextUtils.equals("doc", format) || TextUtils.equals("docx", format)) {
  7. mContext.startActivity(IntentDocumentView.getWordFileIntent(path));
  8. } else if (TextUtils.equals("xls", format) || TextUtils.equals("xlsx", format)) {
  9. mContext.startActivity(IntentDocumentView.getExcelFileIntent(path));
  10. } else if (TextUtils.equals("zip", format) || TextUtils.equals("rar", format)) {
  11. mContext.startActivity(IntentDocumentView.getZipRarFileIntent(path));
  12. }else if (TextUtils.equals("pdf", format) || TextUtils.equals("PDF", format)) {
  13. mContext.startActivity(IntentDocumentView.getPdfFileIntent(path));
  14. }else {
  15. ToastUtil.showToast(mContext, "新增文件类型,请联系软件开发商");
  16. }
  17. } else {
  18. ToastUtil.showToast(mContext, "请先下载文件");
  19. }
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. ToastUtil.showToast(mContext, "请先安装可以查看" + format + "格式的软件");
  23. }
  24. }

判断文件格式 ,然后调用工具类内对应的方法。

如果大家还有其他问题,可以加入我的开发群讨论交流:

开发一群:454430053开发二群:537532956

文章来源: wukong.blog.csdn.net,作者:再见孙悟空_,版权归原作者所有,如需转载,请联系作者。

原文链接:wukong.blog.csdn.net/article/details/78273737

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。