一,实现的功能
- 1.实现android各个版本看可以任意访问内置存储卡,自定义文件样式并且列表里面展示。
- 2.实现对文件的剪切,复制,删除,移动。
- 3.实现对文件目录的排序(日期,大小,名称)
- 4.实现创建不同类型的文件,例如wold,excle,xml等文件。
如下图所示:实现效果
二,开始代码
- 自定义炫酷Activity窗口,并且用ListView或者RecylerView来展示我们所要访问的文件夹路径下的所有文件。
遇到的问题解决:
- 对于手机存储卡的选择。存放位置的选择(内置存储卡,外置SD卡),这个我们可以通过反射来获取内存卡管理者的StorageVolume这样就可以遍历每一个数组,通过isRemoveBle来判断是否可以移除(能移除的当然是有外置存储卡了)。近两年手机都是内置卡,什么16,32,64,128G真的搞个100G以上的你要干啥,而且很多时候手机都没有外置存储卡,这里舍弃了老人机了,我姥爷用的老人机就不提了。所以对于开发者来说,我都会果断选择内置存储卡,存放自己项目中的文件。
下面开始兴建一个项目MyFileManager
- 手机:手机三星s8
- 版本:Android8.0.0
- 手机:三星Note4
- 版本:6.1.0
拿到外置存储卡: Environment.getExternalStorageDirectory().absolutePath
Environment.getExternalStorageDirectory().absolutePath可以拿到存储卡的,如果有外置sd卡就拿到外置sd卡,如果没有就会内置sd卡,由于我手机都是内置。
当然这里我们可以判断是否具有外置存储卡。这一两年内好多手机都没了外置卡吧,我记得我老爷手机有外置卡槽。这里通过反射我们可以判断是否具有外置卡。代码如下:
/**
* 反射调用获取内置存储和外置sd卡根路径
* @param mContext 上下文
* @param haveSdCard 是否有卡槽外置卡,fals