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

网友投稿 1058 2022-05-29

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

话不多说,贴上代码

工具类

import java.io.File;

import android.content.Intent;

import android.net.Uri;

/**

* android Intent打开各种类型文件((PDF、word、excel、ppt、chm)

*/

public class IntentDocumentView {

// 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;

}

// android获取一个用于打开图片文件的intent

public static Intent getPicturefFileIntent(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获取一个用于打开压缩包的intent (手机需安装能打开压缩文件的相关软件)

public static Intent getZipRarFileIntent(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-gzip");

return intent;

}

}

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

protected void openFile(String path) {

String format = path.substring(path.lastIndexOf(".") + 1);

File file = new File(path);

try {

if (file.exists() || FileUtil.fileAvailable(file)) {

if (TextUtils.equals("doc", format) || TextUtils.equals("docx", format)) {

mContext.startActivity(IntentDocumentView.getWordFileIntent(path));

} else if (TextUtils.equals("xls", format) || TextUtils.equals("xlsx", format)) {

mContext.startActivity(IntentDocumentView.getExcelFileIntent(path));

} else if (TextUtils.equals("zip", format) || TextUtils.equals("rar", format)) {

mContext.startActivity(IntentDocumentView.getZipRarFileIntent(path));

}else if (TextUtils.equals("pdf", format) || TextUtils.equals("PDF", format)) {

mContext.startActivity(IntentDocumentView.getPdfFileIntent(path));

}else {

ToastUtil.showToast(mContext, "新增文件类型,请联系软件开发商");

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

}

} else {

ToastUtil.showToast(mContext, "请先下载文件");

}

} catch (Exception e) {

e.printStackTrace();

ToastUtil.showToast(mContext, "请先安装可以查看" + format + "格式的软件");

}

}

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

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

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

Android

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《Hadoop权威指南:大数据的存储与分析》—4.3.3 公平调度器配置
下一篇:SpringBoot整合Swagger管理API接口详解
相关文章