android打开对应文件,Android打开指定文件实践 --- 工具类

本文介绍了如何在Android中实现下载文件后直接打开,避免用户手动寻找。通过判断文件类型,利用Intent和FileProvider实现不同文件(如视频、音频、文档等)的打开功能,并提供相关工具类代码。
摘要由CSDN通过智能技术生成

项目中有下载文件的功能,但是有点 low,就是单纯的下载,下载成功提示用户文件下载在哪,需要用户手动去文件管理器找这些文件,不是很人性化,于是决定新增下载文件以后让用户直接能打开文件,友好型会好很多

前言

首先在实现打开指定文件之前,我尝试过打开指定的文件夹,但是并没有成功,研究了大半天的时间,发现是不可行的,这是个坑,希望不要有人再踩这个坑了,(当然,也有可能是我没找到打开文件夹的方法,如果有人知道,希望能够赐教下,先谢谢了)

文末会给出封装好的代码,OpenFileUtils 和 FileProviderUtils 类,可以直接使用。

判断文件类型

我们在打开文件之前,首先得知道文件的类型,才能指定 Intent 的 Data ,才能实现打开文件的功能。

常见的文件类型以及对应的 DataType 如下:

/**

* 声明各种类型文件的dataType

**/

private static final String DATA_TYPE_APK = "application/vnd.android.package-archive";

private static final String DATA_TYPE_VIDEO = "video/*";

private static final String DATA_TYPE_AUDIO = "audio/*";

private static final String DATA_TYPE_HTML = "text/html";

private static final String DATA_TYPE_IMAGE = "image/*";

private static final String DATA_TYPE_PPT = "application/vnd.ms-powerpoint";

private static final String DATA_TYPE_EXCEL = "application/vnd.ms-excel";

private static final String DATA_TYPE_WORD = "application/msword";

private static final String DATA_TYPE_CHM = "application/x-chm";

private static final String DATA_TYPE_TXT = "text/plain";

private static final String DATA_TYPE_PDF = "application/pdf";

/**

* 未指定明确的文件类型,不能使用精确类型的工具打开,需要用户选择

*/

private static final String DATA_TYPE_ALL = "*/*";

然后我们得根据要打开的文件名,获取文件的类型:

// 取得文件扩展名

String end = file.getName().substring(file.getName().lastIndexOf(".") + 1, file.getName().length()).toLowerCase();

// 依扩展名的类型决定MimeType

switch (end) {

case "3gp":

case "mp4":

openVideoFileIntent(mContext, file);

break;

case "m4a":

case "mp3":

case "mid":

case "xmf":

case "ogg&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值