Android上进行文件选择或操作的第三方库,自动申请存储权限,支持 Android4.4 ~ 13,再也不用为了适配各种版本而苦恼了,快速集成,一句代码搞定,完善的文档,支持无root权限访问和操作Android/data和Android/obb目录(适配Android 13),支持SD卡,高度自定义UI满足你的所有需求,使用非常灵活,支持国际化,对于Android文件选择你只需要关注你的业务代码即可其他的都交给它。
特性
- 自动申请存储权限
- 安卓 4.4 ~ 13
- Android/data和Android/obb目录访问和操作
- SD卡
- 高度自定义UI
- 国际化
前言
在开始之前可以给项目一个Star吗?非常感谢,你的支持是我唯一的动力。欢迎Star和Issues!
项目地址:
Github地址
Gitee地址
demo演示:
系统版本:Android 13
下载链接:体验APP
一、快速开始
第1步:添加仓库:
如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入
如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入
第2步:添加远程依赖:
配置完远程仓库后,在项目 app 模块下的 build.gradle 文件中加入远程依赖
最新发布版:
第3步:基本用法示范:
二、基本设置
打开调试模式
1、Activity构建模式:
2、Fragment构建模式:
第1步:在你需要显示的布局文件xml中使用FrameLayout占位
第2步:编写代码
第3步:重写onBackPressed()方法让路径选择器优先处理返回按钮点击事件
非常重要!!!
非常重要!!!
非常重要!!!
重要的事情说三遍
3、Dialog构建模式 & 常用设置:
三、高级设置(自定义UI)
UI布局:
1、自定义选项样式(以HandleItem为例子)
方式1:通过FontBean来设置样式
什么?这种方式还不能满足你,那么试试方式2
方式2:重写CommonItemListener的setViewStyle方法来自定义样式
什么?什么?这种方式还不能满足你,那么你来写UI它来帮你添加,试试高度自定义UI
2、高度自定义UI(以Titlebar为例子):
第1步:新建一个布局文件,如:fragment_custom_titlebar.xml
第2步:新建一个类,如:CustomTitlebarFragment.class使其继承AbstractTitlebarFragment并关联第1步中的布局文件
第3步:编写代码
四、接口与方法(尽量看源码,都写了注释,懒得写文档)
IConfigDataBuilder
方法 |
注释 |
备注 |
setFrameLayoutId(int id) |
设置加载位置FrameLayoutID |
当构建模式为MConstants.BUILD_FRAGMENT时必须设置 |
setRequestCode(int code) |
设置请求码 |
当构建模式为MConstants.BUILD_ACTIVITY时必须设置 |
setRootPath(String path) |
设置开始默认路径 |
默认为内部存储根路径 |
setMaxCount(int maxCount) |
设置最大选择数量 |
不设置默认为-1 即无限 |
setShowFileTypes(String... fileTypes) |
设置显示文件类型 |
没有后缀请用"" |
setSelectFileTypes(String... fileTypes) |
设置选择文件类型 |
没有后缀请用"" |
setSortType(int sortType) |
设置排序规则 |
类型请看MConstants |
setRadio() |
设置单选 |
默认多选 |
setShowSelectStorageBtn(boolean var) |
设置是否显示内部存储选择按钮 |
默认true |
setShowTitlebarFragment(boolean var) |
是否显示标题栏 |
默认true |
setShowTabbarFragment(boolean var) |
是否显示面包屑 |
默认true |
setAlwaysShowHandleFragment(boolean var) |
是否总是显示长按弹出选项 |
默认false |
setTitlebarMainTitle(FontBean titlebarMainTitle) |
设置标题栏主标题 |
还可以设置字体大小,颜色等 |
setTitlebarBG(Integer titlebarBG) |
设置标题栏背景颜色 |
|
setFileItemListener(FileItemListener fileItemListener) |
设置文件item点击回调 |
点击是文件才会回调,如果点击是文件夹则不会 |
setMorePopupItemListeners(CommonItemListener... morePopupItemListener) |
设置右上角选项回调 |
|
setHandleItemListeners(CommonItemListener... handleItemListener) |
设置长按弹出选项回调 |
|
setTitlebarFragment(AbstractTitlebarFragment titlebarFragment) |
设置自定义标题栏UI |
自己的Fragment必须继承AbstractTitlebarFragment |
setHandleFragment(AbstractHandleFragment handleFragment) |
设置长按弹出自定义UI |
自己的Fragment必须继承AbstractHandleFragment |
start() |
开始构建 |
必须调用 |
...... |
...... |
五、!!!特别注意 !!!
分区存储
该库以及适配了分区存储,不需要额外适配,你只需要写你的业务代码即可,其他的交给它。
- 注意该库已经在库的
AndroidManifest.xml
中添加了:
- 可能会报错:
请在你的项目中的AndroidManifest.xml
设置一致
版本升级
- 新版本往往解决了旧版本的一些问题、增加了性能、可扩展性......建议升级新版本
- 请注意因为重构了项目导致了旧版本与新版本不兼容。1.0.x升级1.1.x为非兼容升级,请注意学习新的API
体积过大
- 已经集成了Blankj/AndroidUtilCode
如果项目对大小有严格要求请自行下载源码并精简AndroidUtilCode模块
代码混淆
- 一般来说无需配置,会自动导入混淆规则
特别鸣谢
- getActivity/XXPermissions
- CymChad/BaseRecyclerViewAdapterHelper
- Blankj/AndroidUtilCode
- xuexiangjys/XTask
- ZLYang110/FileSelector
- zzy0516alex/FileSelectorRelease
开源项目以及其依赖项目。