V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
eyeshuaji
V2EX  ›  Android

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

  •  
  •   eyeshuaji · 2023-01-09 15:09:00 +08:00 · 11119 次点击
    这是一个创建于 712 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有些文件管理器会在文件夹的图标上附上应用图标,表明这个文件夹由该应用生成

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

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

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

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

    不过这个东西是个半残的 API
    需要自己递归提交对所有文件夹的监视
    eyeshuaji
        14
    eyeshuaji  
    OP
       2023-01-09 23:06:39 +08:00
    感谢兄弟们解答
    dingwen07
        15
    dingwen07  
       2023-01-10 05:48:21 +08:00 via iPhone
    媒体文件肯定有记录,毕竟软件可以始终访问自己创建的媒体
    其他的文件就真的不好说了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2878 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 85ms · UTC 08:32 · PVG 16:32 · LAX 00:32 · JFK 03:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.