android intent打开各种格式文档方法
2023-03-07 09:07:58 时间
我们开发的时候经常碰到打开各种文档,目前的应用处理方式 基本都是依赖于三方软件打开 ,而不是在应用内打开,因为文件格式有很多,倘若都在应用内打开的话,肯定要增加很大的开发时间和开发成本,而且实现效果没有一些三方的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, "新增文件类型,请联系软件开发商");
}
} else {
ToastUtil.showToast(mContext, "请先下载文件");
}
} catch (Exception e) {
e.printStackTrace();
ToastUtil.showToast(mContext, "请先安装可以查看" + format + "格式的软件");
}
}
判断文件格式 ,然后调用工具类内对应的方法。
相关文章
- 手把手教你进行JS逆向并去除App开屏广告
- 微前端究竟是什么?微前端核心技术揭秘!
- App与Hap、Entry与Feature,BundleName与Packge,务必弄明白
- 如何在 Ubuntu 中卸载 deb 包
- Windows 11的下一次更新不会删除控制面板 但更多的选项将被转移
- 核心应用覆盖率100%,货拉拉智能监控落地实践
- 十大必备 Ubuntu 应用:必备篇
- 十大必备 Ubuntu 应用:优选篇
- 桌面应用开发技术对比,你明白了吗?
- WSA获7月更新:支持AV1编解码 升级设置应用
- 十大必备 Ubuntu 应用:基本篇
- Windows 11又一重磅应用迎来新UI!全新OneDrive曝光
- OpenHarmony HiTrace在IPC通信中的应用(L2)
- RTOS 应用程序开发人员面临的三个常见挑战
- 我做了一个App,如何让别人限时使用?
- Java 仍然是优秀编程语言的五个原因
- 如何通过 Ingress-Nginx 实现应用灰度发布?
- 基于 Qiankun 微前端实践- 从零到一篇
- 图解设计模式:身份认证场景的应用
- 联合体在单片机编程中的应用