一个适用于Android平台的文件操作库 —— kt库。
这是一个多功能文件库,它简化了开发人员访问安卓设备磁盘文件的步骤。 它支持基本的Java文件Api,集成了高级文件操作Api,如“SuFile”和“ShizukuFile”, 并支持访问权限的自动申请。 开发者不再需要关心适配不同Android版本的新变化,一切都交给LintFile!
- 适配Android 7.0~Android 15
- 支持Root文件操作和Root打开文件IO流
- 支持Shizuku文件操作和Shizuku打开文件操作流
- 高性能的Root文件操作和Shizuku文件操作
- 简单易用的File Api(与java.io.File类似)
- 自动化权限申请
-
给你的项目配置maven仓库
repositories { google() mavenCentral() }
-
导入lint-file依赖
dependencies { implementation("io.github.lumkit:lint-file:1.0.5") }
-
初始化文件操作库.
class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 初始化Android上下文 LintFileConfiguration.instance.init(this) // 进行其它操作 } override fun onDestroy() { // 释放文件操作库 LintFileConfiguration.instance.destroy() super.onDestroy() } }
-
开始使用
-
自动化权限
// 1. 先获取LintFile实例 // file扩展函数会根据文件路径自动创建合适的LintFile实例 // 你也可以手动创建LintFile的不同实现:DefaultFile、StorageAccessFrameworkFile、SuFile和ShizukuFile val lintFile = file("/xxx/xxx/xxx") // 2. 通过use扩展函数进行自动化权限申请 lintFile.use( // 实现权限注册,这里只是简单实现,实际上你可以在此弹出模态框来进一步优化交互体验 onRequestPermission = { type: PermissionType -> when (type) { // 外部存储权限 PermissionType.EXTERNAL_STORAGE -> { ActivityCompat.requestPermissions( activity, arrayOf( Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, ), 0x000001 ) } // 所有文件访问权限 PermissionType.MANAGE_STORAGE -> { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { val intent = Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION) intent.data = Uri.parse("package:" + activity.packageName) activity.startActivity(intent) } } // SAF框架文件访问权限 PermissionType.STORAGE_ACCESS_FRAMEWORK -> { activity.requestAccessPermission(0x000002, openFile.path) } // Root权限 PermissionType.SU -> { // 这里没啥好实现的 } // Shizuku权限 PermissionType.SHIZUKU -> try { ShizukuUtil.requestPermission() } catch (e: Exception) { e.printStackTrace() Toast.makeText( activity, R.string.text_shizuku_service_is_not_active, Toast.LENGTH_SHORT ).show() } } }, // 此回调作用域中表示已获取到需要的权限,可通过this: LintFile来调用文件操作API granted = { val fileName = this.name println(fileName) } )
不要忘了!
class MainActivity : ComponentActivity() { // 在此保存/Android/data的文件访问权限! override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) takePersistableUriPermission(0x000002, requestCode, resultCode, data) } }
-
文件API操作(与java.io.File类似,这里就不过多赘述)
// 获取Lint File实例 val file = file("/x/xx/xxx") // 获取文件名 val fileName = file.name // 获取文件路径 val path = file.path //获取文件列表 val fileList = file.list() ...
-
打开IO流
- 打开输入流
//获取LintFile实例 val file = file("/x/xx/xxx") // 打开输入流 val inputStream = file.openInputStream() // 进行读取操作,需要手动关闭流 ...
- 打开输出流
//获取LintFile实例 val file = file("/x/xx/xxx") // 打开输出流 val outputStream = file.openOutputStream() // 进行写入操作,需要手动关闭流 ...
- 打开输入流
-