前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >android intent打开各种格式文档方法

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

作者头像
再见孙悟空_
发布2023-02-10 19:56:04
8730
发布2023-02-10 19:56:04
举报

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

话不多说,贴上代码

工具类

代码语言:javascript
复制
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;
	}

}

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

代码语言:javascript
复制
	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 + "格式的软件");
		}

	}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档