工具类
相关依赖
- Toaster(Toast 样式库):https://github.com/getActivity/Toaster
- XXPermissions(权限请求库):https://github.com/getActivity/XXPermissions
- MMKV(高性能键值存储):https://github.com/Tencent/MMKV
- 版本统一记录在
gradle/libs.versions.toml,可按需查看或升级
app/src/main/java/com/joker/kit/core/util 统一存放轻量工具类,当前包含 Toast、权限、存储、包信息四类封装。目录结构如下,后续若需要新增其他工具,只需沿用相同的包分类方式即可:
| 目录/文件 | 功能 |
|---|---|
toast/ToastUtils.kt | 以 Toaster 为核心,封装成功/失败/警告等自定义样式及深浅色切换。 |
permission/PermissionUtils.kt | 基于 XXPermissions 的动态权限请求工具,统一处理拒绝、永久拒绝与回调。 |
storage/MMKVUtils.kt | 对腾讯 MMKV 的再封装,提供多实例、加密实例及常用 put/get 方法。 |
package/PackageUtils.kt | 获取 App 名称、版本号、签名、是否安装等信息。 |
现有工具概览
ToastUtils
- 初始化:
ToastUtils.init(application, isDarkTheme)在Application中调用,注册 Toaster 并根据主题指定默认样式。 - 主题切换:
setBlackStyle()/setWhiteStyle()随系统切换;Application.onConfigurationChanged()已演示用法。 - 常用方法:
show()/showSuccess()/showError()/showWarning()支持直接传字符串或@StringRes,个性化样式由toast_success/toast_error/toast_warn控制。
PermissionUtils
- 统一入口:
requestStoragePermission、requestCameraPermission、requestGalleryPermission、requestNotificationPermission、requestAudioPermission等。 - 调用方式:传入
Activity或Fragment的Context,并提供(Boolean) -> Unit回调即可,内部负责提取Activity。 - 失败处理:若勾选“不再询问”,会自动弹 Toast 并跳转系统设置页面;否则仅提示失败,不强行跳转。
MMKVUtils
- 初始化:
MMKVUtils.init(application)在Application中调用一次。 - 实例管理:
getInstance()/getMultiProcessInstance()/getEncryptedInstance()根据需求返回命名实例,并做缓存避免重复创建。 - 读写 API:封装了
putBoolean/getBoolean、putInt/getInt、putParcelable、putJson等常用方法,默认使用defaultMMKV;也可传入自定义实例。 - 序列化:内置
kotlinx.serialization,putObject/getObject可直接存取@Serializable数据类。
PackageUtils
提供读取 App 名称、版本号、签名(MD5/SHA1)以及判断其他应用是否安装等方法,常用于分享、调试或第三方 SDK 校验场景。
如何扩展新的工具类
- 在
core/util下新建子包(如core/util/network)。 - 编写对应的工具类,保持
object+ KDoc 说明的写法,必要时在类中附示例。 - 如需三方库,先在
gradle/libs.versions.toml注册版本,再在build.gradle.kts中引用,继续在本文件的“相关依赖”列表中补充说明。
这样可以让所有通用工具保持统一出口,项目成员查阅或维护时只需打开 core/util 即可。