AndroidFilePicker

FilePicker is a small and fast file selector library that is constantly evolving with the goal of rapid integration, high customization, and configurability~

View project on GitHub

Banner

AndroidFilePicker

它没有像 Rocky,Cosmos 或是 Peppa 这样的名字。 Android File Picker 正如其名,是一个本地文件选择器框架。 他的一些特征如下所述:

  • ActivityFragment 中启动
    • 从一行代码开始
  • 浏览本地存储中的所有文件
    • 内置默认文件类型和文件鉴别器
    • 或者您可以自己实现文件类型
  • 内置了单选模式和多选模式
  • 自定义列表过滤器
    • 只想显示图片(或视频,音频……)? 没问题!
    • 当然,您也可只显示文件夹
  • 自定义item点击事件:只需要实现监听器
  • 四个内置主题和自定义主题
  • 还有更多待您自己探索的特性(?)
Rail Style(default) Reply Style Crane Style Shrine Style

版本兼容性

这取决于您的 targetAPI :

  • targetAPI <= 28,完全没有问题 ;)
  • targetAPI == 29,请为您的项目启用 requestLegacyExternalStorage 特性:D
  • targetAPI == 29
    • 当运行于 Android 11以及以上的平台时,仅可以读取媒体文件(图片、音视频),除此均无法访问(比如PDF文档、apk 二进制文件等)

请参看 issue: All About Scope Storage.

下载使用

  1. 在你的项目中添加依赖

现在项目 build.gradle 配置文件添加仓库:

allprojects {
    repositories {
	    ...
    	maven { url 'https://jitpack.io' }
    }
}

然后在子模块(app)的配置文件添加依赖:

dependencies {
    implementation 'me.rosuh:AndroidFilePicker:latest_version'
}

latest_version 请自行替换成 最新版本

使用

权限

你需要自己申请权限,这个库不会为你申请权限。看看版本兼容性了解更多细节。

开始使用

简单的链式调用示意:

FilePickerManager
        .from(context)
        .forResult(FilePickerManager.REQUEST_CODE)

现在你已经起飞了🛩️…(真的只有两行)

获取结果

获取结果onActivityResult接受消息,然后调用FilePickerManager.obtainData()获取保存的数据,结果是所选取文件的路径列表(ArrayList<String>())

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    when (requestCode) {
        FilePickerManager.instance.REQUEST_CODE -> {
            if (resultCode == Activity.RESULT_OK) {
                val list = FilePickerManager.instance.obtainData()
                // do your work
            } else {
                Toast.makeText(this@SampleActivity, "没有选择任何东西~", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

更多示例

来翻翻我写的飞行手册吧?

或者想看看主题配色

功能 & 特点

  1. 链式调用
  2. 默认选中实现
    • 点击条目(item)无默认实现
    • 点击CheckBox为选中
    • 长按条目为更改选中状态:选中/取消选中
  3. 内置四种主题配色 + 可自定义配色
    • 查看主题颜色示意图,然后调用setTheme()传入自定义主题
  4. 默认实现多种文件类型
    • 实现IFileType接口来实现你的文件类型
    • 实现AbstractFileType抽象类来实现你的文件类型甄别器
  5. 公开文件过滤接口
    • 实现AbstractFileFilter抽象类来定制你自己的文件过滤器,这样可以控制文件列表的展示内容
  6. 多种可配置选项
    1. 选中时是否忽略文件夹
    2. 是否显示隐藏文件夹(以符号.开头的,视为隐藏文件或隐藏文件夹)
    3. 可配置导航栏的文本,默认显示、多选文本、取消选择文本以及根目录默认名称
  7. 公开条目(item)选择监听器,可自定义条目被点击的实现

其他


Special Thanks To: