Android File Picker:快速集成专业级文件选择功能
Android File Picker是一个专为安卓应用设计的本地文件选择框架,它通过简洁的API和丰富的配置选项,让开发者能够快速实现功能完善的文件管理界面。无论是社交媒体应用中的图片选择,还是办公工具中的文档查找,这个框架都能提供流畅的用户体验。
核心功能特性
Android File Picker提供了全面的文件管理解决方案:
- 极简启动:一行代码即可启动文件选择器,支持在Activity或Fragment中使用
- 智能文件识别:内置多种文件类型识别器,包括图片、视频、音频、文档等
- 灵活选择模式:支持单选和多选模式,可自定义最大选择数量
- 精准内容过滤:可配置只显示特定类型的文件或仅显示文件夹
- 丰富主题定制:提供四种内置主题和完全自定义主题支持
- 深度事件处理:公开条目点击监听器,支持自定义交互逻辑
快速集成指南
环境配置
在项目的build.gradle文件中添加仓库配置:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
在模块的build.gradle文件中添加依赖:
dependencies {
implementation 'me.rosuh:AndroidFilePicker:latest_version'
}
权限处理
根据不同的Android版本,需要处理相应的存储权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
requestPermissions.launch(arrayOf(READ_MEDIA_IMAGES, READ_MEDIA_VIDEO, READ_MEDIA_AUDIO))
} else {
requestPermissions.launch(arrayOf(READ_EXTERNAL_STORAGE))
}
基础使用示例
最简单的文件选择器启动方式:
FilePickerManager
.from(this)
.forResult(FilePickerManager.REQUEST_CODE)
获取选择结果
在onActivityResult中处理选择结果:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
when (requestCode) {
FilePickerManager.REQUEST_CODE -> {
if (resultCode == Activity.RESULT_OK) {
val list = FilePickerManager.obtainData()
// 处理选中的文件列表
}
}
}
}
高级功能配置
单选模式配置
FilePickerManager
.from(this)
.setTheme(getRandomTheme())
.enableSingleChoice()
.forResult(FilePickerManager.REQUEST_CODE)
只显示图片文件
FilePickerManager
.from(this)
.setTheme(getRandomTheme())
.filter(object : AbstractFileFilter() {
override fun doFilter(listData: ArrayList<FileItemBeanImpl>): ArrayList<FileItemBeanImpl> {
return ArrayList(listData.filter { item ->
((item.isDir) || (item.fileType is RasterImageFileType))
})
}
.forResult(FilePickerManager.REQUEST_CODE)
多选文件配置
FilePickerManager
.from(this)
.setTheme(getRandomTheme())
.maxSelectable(2)
.forResult(FilePickerManager.REQUEST_CODE)
自定义根目录
FilePickerManager.from(this)
.storageType("⬇️", FilePickerConfig.STORAGE_CUSTOM_ROOT_PATH)
.setTheme(getRandomTheme())
.setCustomRootPath("/storage/emulated/0/Download")
.forResult(FilePickerManager.REQUEST_CODE)
自定义文件类型
class CustomFileType(
override val fileType: String = "",
override val fileIconResId: Int = R.drawable.ic_unknown_file_picker
) : FileType {
override fun verify(fileName: String): Boolean {
return fileName.endsWith("123")
}
}
主题展示
Android File Picker提供四种精美的内置主题,满足不同应用场景的视觉需求:
| Rail主题 | Reply主题 | Crane主题 | Shrine主题 |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
实际应用效果
Android File Picker在实际应用中的界面展示
兼容性说明
针对不同Android版本的兼容性处理:
- Android 13及以上:使用新的媒体选择模式
- Android 12及以下:通过READ_EXTERNAL_STORAGE权限访问文件
- 自定义适配:开发者可根据目标API版本进行相应配置
开发建议
- 权限管理:确保在启动文件选择器前已获得必要的存储权限
- 主题选择:根据应用整体设计风格选择合适的主题
- 文件过滤:合理使用文件过滤器提升用户体验
- 结果处理:及时释放选择结果数据避免内存泄漏
Android File Picker以其简洁的API设计、丰富的功能特性和灵活的配置选项,成为安卓应用开发中文件选择功能的理想解决方案。通过这个框架,开发者能够快速集成专业级的文件管理功能,为用户提供流畅高效的文件操作体验。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考








