Android 文件选择器,指定选择文件夹还是文件,根据后缀名过滤,支持多选

禁止转载

FileSelector 直通车

github地址

https://github.com/ZLYang110/FileSelector

 介绍

  • 可指定选择文件夹还是文件,选择显示文件也可指定后缀名显示获取连接
  • 可通过扫描全盘的方式,选择指定后缀名的文件
  • 支持多选。
  • 支持Activity、Fragment
  • 支持androidX
  • 自定义标题颜色

 示例图

 

android 文件夹选择json文件 android 文件选择器代码_文件类型

android 文件夹选择json文件 android 文件选择器代码_android_02

android 文件夹选择json文件 android 文件选择器代码_github_03

android 文件夹选择json文件 android 文件选择器代码_android 文件夹选择json文件_04

用法

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

 

//AndroidX
implementation 'com.github.ZLYang110:FileSelector:2.1.1'

 //support
//implementation 'com.github.ZLYang110:FileSelector:1.0.2'

一、 在文件浏览器中选择指定文件

/**
     *  设置 onlyShowFolder() 只显示文件夹 后 再设置setFileTypes()不生效
     *  设置 onlyShowFolder() 只显示文件夹 后 默认设置了onlySelectFolder()
     *  设置 onlySelectFolder() 只能选择文件夹 后 默认设置了isSingle()
     *  设置 isSingle() 只能选择一个 后 再设置了setMaxCount() 不生效
     *
     */
 FileSelector.from(this)
               // .onlyShowFolder()  //只显示文件夹
                //.onlySelectFolder()  //只能选择文件夹
               // .isSingle() // 只能选择一个
                .setMaxCount(5) //设置最大选择数
                .setFileTypes("png", "doc","apk", "mp3", "gif", "txt", "mp4", "zip") //设置文件类型
                .setSortType(FileSelector.BY_NAME_ASC) //设置名字排序
                //.setSortType(FileSelector.BY_TIME_ASC) //设置时间排序
                //.setSortType(FileSelector.BY_SIZE_DESC) //设置大小排序
                //.setSortType(FileSelector.BY_EXTENSION_DESC) //设置类型排序
                .requestCode(1) //设置返回码
                .start();

二、 设置只选择文件夹(文件夹默认只能选择一个)

FileSelector.from(this)
                .onlySelectFolder()  //只能选择文件夹
                .requestCode(1) //设置返回码
                .start();

三、 设置只显示文件夹(只显示文件夹就只能选择文件夹)

FileSelector.from(this)
                .onlyShowFolder()  //只能选择文件夹
                .requestCode(1) //设置返回码
                .start();

四、 只显示图片的文件

FileSelector.from(this)
                .setMaxCount(5) //设置最大选择数
                .setFileTypes( "png","jpg") //设置文件类型
                .requestCode(1) //设置返回码
                .start();

 五、 自定义标题颜色

FileSelector.from(this)
                 .setTilteBg(R.color.titleBg) //不填写默认是: ?attr/colorPrimary
                 .setTitleColor(R.color.themeRed)//不填写默认白色
                 .setTitleLiftColor(R.color.text_accent)//不填写默认白色
                 .setTitleRightColor(R.color.face_text)//不填写默认白色
                 .setMaxCount(5) //设置最大选择数
                 .setFileTypes("png","jpg", "doc","apk", "mp3", "gif", "txt", "mp4", "zip") //设置文件类型
                 .setSortType(FileSelector.BY_NAME_ASC) //设置名字排序
                 .requestCode(1) //设置返回码
                 .start();

六、 接收返回的文件数据,在 ++onActivityResult++ 方法中获取。选中文件以链表方式返回, ++EssFile++ 类为载体

@Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 1) {
            if(data!=null){
                ArrayList<String> essFileList = data.getStringArrayListExtra(Const.EXTRA_RESULT_SELECTION);
                StringBuilder builder = new StringBuilder();
                for (String file :
                        essFileList) {
                    builder.append(file).append("\n");
                }
                tv_backResult.setText(builder.toString());
            }
        }
    }

属性列表

名称

描述

默认值

FileTypes

需要显示的文件类型

SortType

排序类型

按名字排序 BY_NAME_ASC

isSingle

是否单选

false

maxCount

最大可选中数量

10

request_code

请求码

onlyShowFolder

是否仅只显示文件夹

false

onlySelectFolder

是否只选择文件夹

false

setTilteBg

设置标题背景颜色

?attr/colorPrimary

setTitleColor

设置标题颜色

白色

setTitleLiftColor

设置标题左边箭头颜色

白色

setTitleRightColor

设置标题右边字体颜色

白色