Android 有没有办法可以查出一个文件(夹)是哪个应用创建的?

2023-01-09 15:09:00 +08:00
 eyeshuaji
有些文件管理器会在文件夹的图标上附上应用图标,表明这个文件夹由该应用生成

这个的原理又是什么?
6414 次点击
所在节点    Android
15 条回复
AoEiuV020CN
2023-01-09 15:32:36 +08:00
写死的吧,
比如 ES ,会在 /sdcard/backups 文件夹用上自己 ES 的图标,
因为 ES 确实会生成这个文件夹,
并不管这个文件夹实际上是谁生成的,
OkotoO
2023-01-09 16:39:01 +08:00
相似的,MT 管理器会在 Android/data 下给文件夹附上对应包名的图标,但并不代表这个文件夹一定由该应用生成
还有较老的 Android 手机里,厂商预装的文件管理常常会看到标着 “我是 MT” 字样的文件夹(现在可能也还有)

其次在 Linux 中也没有相似的实现(似乎?),(在我认知范围内)顶多就是看到拥有这个文件夹的用户组罢了
selca
2023-01-09 16:39:21 +08:00
很多都是基于配置式的,人工标记某个文件夹是哪个 app 生成的,然后下发到文件管理器。

还有一部分是基于包名来识别的,一部分文件夹本身就跟包名一样
lcy630409
2023-01-09 16:50:12 +08:00
人工智能
大部分靠人工,知名软件的包名随处可查,给他相应的 logo 就行,你自己写一个自己用的应用 就没这待遇了
LxnChan
2023-01-09 16:53:21 +08:00
ES 的原理是下载一个包含文件夹名和包名的数据库,然后在本地提取图标并显示在前端。
顺带一提小米的自带文件管理用的也是 ES 的数据库和一样的原理。
litmxs
2023-01-09 16:54:15 +08:00
有什么法子能监控文件创建?
根目录下总是有一些 "deviceId.txt" ".turing.dat"
".gs.fs5"这样的文件夹,不知道是哪个 app 创建的
cxsz
2023-01-09 16:59:36 +08:00
@litmxs #6 监控比较难,但可以限制创建,有个 app 叫 存储空间隔离,可以强制为每个 app 单独设置目录(一般指定为 Android/data/包名 /),防止它在 sdcard 目录下创建文件夹和文件
需要 root 权限
ysc3839
2023-01-09 19:12:27 +08:00
@cxsz 但是存储空间隔离就有监控功能
systemcall
2023-01-09 21:00:05 +08:00
不 hook 相关 API 无法做到
安卓应用一般是跑在不同的用户上,但是读写 sd 卡都是通过 sdcardfs 来进行,不 hook 的话没有什么好办法来追踪
存储空间管理似乎不开源,应该是 hook 了 sdcardfs
lifansama
2023-01-09 21:04:59 +08:00
cxsz
2023-01-09 21:17:21 +08:00
@ysc3839 #8 好吧,可能我没注意到,再去看看😂
LaTero
2023-01-09 21:52:55 +08:00
@litmxs inotify ,不过很久以前折腾的时候发现有的内核会阉割掉。
icedx
2023-01-09 21:53:04 +08:00
查是肯定查不出来的
但是可以监控

https://developer.android.com/reference/android/os/FileObserver

不过这个东西是个半残的 API
需要自己递归提交对所有文件夹的监视
eyeshuaji
2023-01-09 23:06:39 +08:00
感谢兄弟们解答
dingwen07
2023-01-10 05:48:21 +08:00
媒体文件肯定有记录,毕竟软件可以始终访问自己创建的媒体
其他的文件就真的不好说了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/907610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX