:::tip
这是一个定期扫描安卓私有目录文件的,使用时候需要有一定jvav基础,不会的可以找张浩洋老师学习,我在中间会穿插一些教程作为解释,请放心阅读
:::
引言
这个Java的一个封装类,可以让代码便于调用,同时不和外界产生冲突,我的目的很简单,就是提高复用性与可维护性,这里给出调用方法
本项目包分为:
- FileScanner // 专门对于文件扫描并且查杀的一个类
- ScannerManager.java // 根据从网络获取的正则表达式,更新并管理扫描器
- PeriodicFileScanner.java// 周期性的文件扫描与删除
我开发时候喜欢把某些随处调用的方法封装起来,方便统一管理与调用,这需要投入人力,某些AI似乎并不擅长连续化,持久化的开发,即使是Android Studio这几日有一个Agent,也仅仅擅长于一些Error的修复,在这里写好也方便后人了解开发过程,避免屎山代码
FileScanner
根据给定的正则表达式,异步执行扫描和删除操作。
分别有三个参数
主要起作用的是这两个:
- regexString 由分号分隔的正则表达式字符串。
- listener 用于接收扫描结果的回调。
原理:创建一个单线程的后台执行器,在后台线程中执行扫描和清理操作,而后获取应用程序的内部文件目录作为目标扫描目录,并且listener回调扫描完成的信息,并传递已删除文件的列表,其中回调还用于检查正则表达式是否错误之类的,最后递归扫描目录,匹配并删除文件,这个有缺陷,不能循环扫描,后来上网配合Ai写了一个,这是下面这个
他运行起来长这样,啊这个是log,调试用的,生产环境一定要删掉,对吧,不然逆向小子看到了一堆调试环境才有的东西,直接乐死了
1 | 2025-08-26 10:55:40.776 12519-12519 PeriodicFileScanner bbs.yuchen.icu I 启动文件扫描器,执行间隔: 30 秒。 |
这就是,我把他装在UIUtils.applyRemoteConfig(activity);了,避免使用者不明白参数
当然Activity这个在所难免,用之前实例化一下就好,记得检查一下是否为空,不然出错了不好找
1 | Activity activity = getActivity(); |
applyRemoteConfig
对DialogConfigParserLi 进行解析,然后调用 ScannerManager 来处理扫描逻辑
ScannerManager就是主角了,说实话你可以直接搬过去用我这个,毕竟代码都摆在那里了
1 | // 调用 ScannerManager 来处理扫描逻辑 |
当然我本来是对接网络的,如果你想内置,直接改字符串,不需要从DialogConfigParserLi这里索要fileScanRegex,你要问config.fileScanRegex哪来的??,那就是前文final DialogConfigLiQiuTing config = DialogConfigParserLi.parse(networkResponse);解析来的,networkResponse是参数,前面需要这样写String networkResponse = NetworkUtils.fetchContentFromUrl(DEFAULT_CONFIG_URL);,有啥不会的就看bbs.yuchen.icu.UIUtilsapplyRemoteConfig
顺带教学一下
应用程序上下文获取方式
- 在 Activity 或 Service 中,可以直接使用 `this` 或 `getApplicationContext()`。
- 在其他类中,可以通过构造函数传递 Context,或者创建一个自定义的 Application 类并在其中提供一个静态方法来获取全局 Context。
- **重要提示:** 请确保传递的是 Application Context,以避免内存泄漏,尤其是在单例模式下。
PeriodicFileScanner
周期性文件扫描
1 | /** |
之后会直接写这里