文件管理器交接文档

文件管理器交接文档


文件管理器基本原理:

通过两种方式读取文件信息:
  1. 通过MediaStore读取文件,此数据库是安卓内部的数据库,分为
    • MediaStore.Files 此数据库保存所有文件信息;
    • MediaStore.Audio.Media 保存音频文件信息
    • MediaStore.Video.Media 保存视频文件信息
    • MediaStore.Images.Media 保存图片文件信息
      各文件分类选项即是通过此方式读取文件信息;

通过getContentResolver().qury 的方式即可读取此ContentProvider中的数据;

  1. 通过File.listFile来读取文件,此方式可以读取所有文件,包括OTG状态下,以及能够查看某些不被安卓媒体库MediaStore收录的文件,全部文件分类即是通过此方式。
基本的文件属性:

MediaStore数据库中的行列是根据文件信息生产的,关键的几个Columns:

  • MediaStore.Files.FileColumns._ID :即 "_id" 此项是数据库的id.属性唯一;
  • MediaStore.Files.FileColumns.DATA :即"_data" 即文件的完整地址,可以根据此地址生成File,属性唯一;
  • MediaStore.Files.FileColumns.DATE_MODIFIED :最后修改时间
  • MediaStore.Files.FileColumns.SIZE :文件大小
    以下是某些库才存在的且有用的Columns:
  • MediaStore.Video.Media.BUCKET_ID 媒体文件所在文件夹的id;
    更多存在的Columns可以在data/目录中拉出此数据库或查看源码了解:

通过File方式读取的文件,通过文件方法来获取相关信息:
File.getName(),length(),lastModified()等方法来获取文件信息,
可以通过阅读File类了解方法,此处不再赘述;

GreeFileExplorer文件管理及基本构成:

活动 简述 功能
BaseActivity 基类 实现各界面基础功能,导航栏颜色,OTG监听,权限获取,打开关闭输入法等
MainActivity 主界面 文件夹主界面,各分类入口界面
RemoteActivity 远程连接 实现Ftp远程连接功能,一些界面设置
RemoteSeniorActivity 远程设置 Ftp功能设置界面
MemoryActivity 容量显示 通过不断读取数据库并分析类型实现动画来显示手机文件类型
StoragePathChooseActivity 区域选择 当OTG连接时,进入全部文件时的二级目录
FileActivity 文件界面 虚拟类,实现了文件显示,功能设定,方法回调等方法,所有有关于文件的界面都是继承此类的子类,只需要实现不同的文件加载方式。
文件类型子类 简述 功能
LatelyFileExplorerActivity 最近文件 通过判断时间从mediaStore中读取文件显示,重写了更多对话框
PictureVideoActivity 视频和图片 视频和图片的二级目录,主要是通过BUCKET_ID实现分类
FileCategoryActivity 全部文件 依靠读取SD卡获取文件,和其余方式实现不同。可以得到所有文件
FavoriteExplorerActivity 收藏文件 通过读取sp中的收藏夹来得到文件,加载方式类似全部文件
FileGatherActivity 收藏和音频 收藏和音频的二级目录,用于集合同种类型文件
FileExplorerActivity 基本文件 各种子类等分类下的显示,主要通过meidastore数据库读取,然后根据路径或类型来初始化qury条件获取对应的文件
SearchActivity 搜索类 实现了搜索方法,从所有文件中根据名称来得到文件,重写了一些对话框的跳转
接口 简述 功能
OnOtgStatusChange OTG 判断OTG是否连接的借口,实现在UsbBroadCastReceiver中
FileOperationHelper.FileOperationProgress 回调 文件操作进度的回调,包括onStart,OnProgress,onFinish,onError
IFileOperation 实现 对文件的操作,包括open,move,copy,rename,favorite,share等等,具体实现在 FileOperationHelper中
IMemoryView 回调 环状图界面的回调,各种类型的size大小
适配器 简述 功能
FileBaseAdapter 基类 基类,实现一些公用方法以及向上转型,包括IFileAdapter,与BaeItem配合
MyFileCategoryAdapter 文件Item 主文件类型的适配器,显示文件的基本信息,与FileInfo配合
GridViewAdapter 图片集 视频和图片的二级目录适配器与ImageFolder配合
ImageShowAdapter 图片 图片及视频的适配器,利用Glide加载图片
FileGatherAdapter 文件集 收藏和音频的二级目录适配器
工具类 简述 功能
SPInfo SharedPreferences 保存一些基本的状态信息
FTPServerService FTP 实现Ftp功能的服务
UsbBroadCastReceiver OTG OTG状态的监听广播,负责通各个界面Otg连接状态
FileIconLoader 加载器 负责异步加载图片的复杂信息,如图片,视频,音频,文件数量等
ApkPathParseName 文件名转换 根据文件路径来判断常用应用,数据库在raw中,拉取自小米
FileUtils 文件工具 处理文件大小,文件夹大小,文件隐藏等相关操作
MediaScannerHelper 媒体扫描 媒体扫描类,因为每次文件扫描得手动更新数据库
MimeUtils MIME类型 判断文件的MIME类型,当打开或分享文件的时候提供
Common 基础信息 此类中根据文件的后缀名来判断文件的基本类型,用于显示对应图标
Utils 工具集合 此类中包含大量工具,难以细分,但使用很多很重要

FileActivity加载流程图:
FileActivity.png

一些使用到的第三方库介绍及其链接:

小米文件管理器:MIUI文件管理器社区开源版(Community edition of MIUI File Explorer),主要参考对象;
Glide:An image loading and caching library for Android focused on smooth scrolling https://bumptech.github.io/glide/
XDeCompressor:一个通用的解压缩程序,目前支持12种压缩格式的解压;
pinyin4j:A copy of http://sourceforge.net/projects/pinyin4j, then deploy it to maven central repository.
leakcanary:A memory leak detection library for Android and Java.
swiftp:FTP server for your android device. http://ppareit.github.com/swiftp/
GreeGui:格力公共控件包

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容