1
AoEiuV020CN 2023-01-09 15:32:36 +08:00
写死的吧,
比如 ES ,会在 /sdcard/backups 文件夹用上自己 ES 的图标, 因为 ES 确实会生成这个文件夹, 并不管这个文件夹实际上是谁生成的, |
2
OkotoO 2023-01-09 16:39:01 +08:00
相似的,MT 管理器会在 Android/data 下给文件夹附上对应包名的图标,但并不代表这个文件夹一定由该应用生成
还有较老的 Android 手机里,厂商预装的文件管理常常会看到标着 “我是 MT” 字样的文件夹(现在可能也还有) 其次在 Linux 中也没有相似的实现(似乎?),(在我认知范围内)顶多就是看到拥有这个文件夹的用户组罢了 |
3
selca 2023-01-09 16:39:21 +08:00
很多都是基于配置式的,人工标记某个文件夹是哪个 app 生成的,然后下发到文件管理器。
还有一部分是基于包名来识别的,一部分文件夹本身就跟包名一样 |
4
lcy630409 2023-01-09 16:50:12 +08:00
人工智能
大部分靠人工,知名软件的包名随处可查,给他相应的 logo 就行,你自己写一个自己用的应用 就没这待遇了 |
5
LxnChan 2023-01-09 16:53:21 +08:00
ES 的原理是下载一个包含文件夹名和包名的数据库,然后在本地提取图标并显示在前端。
顺带一提小米的自带文件管理用的也是 ES 的数据库和一样的原理。 |
6
litmxs 2023-01-09 16:54:15 +08:00 via Android
有什么法子能监控文件创建?
根目录下总是有一些 "deviceId.txt" ".turing.dat" ".gs.fs5"这样的文件夹,不知道是哪个 app 创建的 |
7
cxsz 2023-01-09 16:59:36 +08:00
@litmxs #6 监控比较难,但可以限制创建,有个 app 叫 存储空间隔离,可以强制为每个 app 单独设置目录(一般指定为 Android/data/包名 /),防止它在 sdcard 目录下创建文件夹和文件
需要 root 权限 |
9
systemcall 2023-01-09 21:00:05 +08:00
不 hook 相关 API 无法做到
安卓应用一般是跑在不同的用户上,但是读写 sd 卡都是通过 sdcardfs 来进行,不 hook 的话没有什么好办法来追踪 存储空间管理似乎不开源,应该是 hook 了 sdcardfs |
10
lifansama 2023-01-09 21:04:59 +08:00 via Android
|
13
icedx 2023-01-09 21:53:04 +08:00
查是肯定查不出来的
但是可以监控 https://developer.android.com/reference/android/os/FileObserver 不过这个东西是个半残的 API 需要自己递归提交对所有文件夹的监视 |
14
eyeshuaji OP 感谢兄弟们解答
|
15
dingwen07 2023-01-10 05:48:21 +08:00 via iPhone
媒体文件肯定有记录,毕竟软件可以始终访问自己创建的媒体
其他的文件就真的不好说了 |