# JLFilePickApp **Repository Path**: zhmhm/JLFilePickApp ## Basic Information - **Project Name**: JLFilePickApp - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-03-31 - **Last Updated**: 2022-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FilePick #### 介绍 文件浏览器(使用该文件浏览器在Google Play 上架不行,因使用了MANAGE_EXTERNAL_STORAGE权限) #### 软件架构 **1.0.0版已发布,使用`kotlin`和`AndroidX`编写**,支持`java`使用。已兼容Android6.0+、Android10、Android11。 支持文件多选、文件删除、文件过滤 # Document ## Demo ```kotlin //开始文件浏览 val rootFile: File = Environment.getExternalStorageDirectory() FilePicker() .withActivity(this)//绑定Activity .withChooseMode(ChooseMode.CHOOSE_MODE_ONLY_FILE)//文件选中模式:只可选中文件,不可选中文件夹 .withSortWay(SortWayEnum.FILE_UPDATE_TIME_DESC)//文件排序方式:更新时间降序 .withTitle("OTA")//设置标题 .withMaxSelected(5)//最大选中数量-返回结果 .withFilFilter(CustomFileFilter::class.java)//文件过滤 .withRequestCode(REQUEST_SELECT_FILE)//Activity请求码 .start(rootFile.absolutePath)//起始路径 //文件浏览选择结果 override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) { super.onActivityResult(requestCode, resultCode, intent) if (requestCode == REQUEST_SELECT_FILE) {//请求码正确 if (resultCode == RESULT_OK) {//返回结果OK try { val list: List? = intent?.getStringArrayListExtra(Constant.RESULT_INFO)//选中文件的绝对路径 val folderPath: String? = intent?.getStringExtra(Constant.RESULT_FOLDER_INFO)//当前操作文件夹的绝对路径 } catch (e: Exception) { e.printStackTrace() } } } } ``` **文件过滤:** ```kotlin class CustomFileFilter : FileFilter { override fun accept(pathname: File): Boolean {//返回结果 true: 显示 false:不显示 if (pathname.isDirectory) { return true } else return pathname.name.endsWith(".ufw") || pathname.name.endsWith(".UFW") } } ``` **Android 6.0+兼容:** 动态申请权限: ```kotlin private fun requestPermission(activity: Activity) { val checkList = arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ) ActivityCompat.requestPermissions(activity, checkList, 100) } ``` **Android 11兼容:** 动态申请所有文件访问权限: ```kotlin //申请存储管理权限 Android11 private fun checkManagerPermission(): Unit { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { //检查是否已经有权限 if (!Environment.isExternalStorageManager()) { //跳转新页面申请权限 startActivityForResult( Intent(Settings.ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION), REQUEST_PERMISSION ); } } } //申请结果 override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) { super.onActivityResult(requestCode, resultCode, intent) if (requestCode == REQUEST_PERMISSION) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { if (Environment.isExternalStorageManager()) { //申请成功 } } } } ```