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

Target API 30 应用分区存储适配是否有效?

  •  
  •   J1ason · 170 天前 via Android · 3481 次点击
    这是一个创建于 170 天前的主题,其中的信息可能已经有所发展或是发生改变。
    为何 TargetAPI 为 33 的应用依然能读取内部存储根目录的图片呢?

    升级小红书到最新版本 8.12.1 ,授予访问照片和视频、访问音频两项权限,在应用内发送图片,能读取到内部存储/tieba/中的图片(百度贴吧拉的💩)。

    查了官方文档,30 以上的应用,能读取到这种位置只有使用 SAF 或者 MANAGE_EXTERNAL_STORAGE 才行,但是我在使用小红书的过程中并没有 SAF 的弹窗,且使用 LibChecker 查看包内并没有 MANAGE_EXTERNAL_STORAGE 相关的权限,这是怎么回事?有没有安卓开发解答一下

    众多国产应用商店要求年底前上传应用必须是 30 以上版本,还以为能解决安卓应用存储空间混乱的问题,没想到用了几个适配的应用之后,依然能随便乱读
    9 条回复    2023-11-16 13:30:57 +08:00
    psklf
        1
    psklf  
       169 天前
    奇怪,保持关注
    Ga2en
        2
    Ga2en  
       169 天前
    你是不是小红书先请求了文件权限然后再请求了分区权限。
    Ga2en
        3
    Ga2en  
       169 天前
    某些厂魔改过。。。。
    devcai
        4
    devcai  
       169 天前
    系统会扫描手机里面的图片、视频,保存到数据库中,app 能读取数据库内容的,通过 uri 再读取图片内容,其中的核心是走系统管理的,不是到其他 app 目录下去扫描文件的。
    你想想,假如你用小红书保存一张图片,想发送给微信好友,如果不让微信读不乱套了吗。
    alan2v2
        5
    alan2v2  
       169 天前
    授予了相册权限之后,对于手机内所有的照片( MediaStore )都是可读的,
    对于 /Pictures , /DCIM , /Download 类似目录可写,或授权后可写,对于其他目录禁止写入
    J1ason
        6
    J1ason  
    OP
       169 天前 via Android
    @alan2v2 你这个解释似乎比较清楚,也就是说,MediaStore 会扫描全部位置的图片并提供访问,但除了/Pictures , /DCIM , /Download 等位置,并不能读和写
    J1ason
        7
    J1ason  
    OP
       169 天前
    @alan2v2 但是我看 MediaStore 相关文档并没有提到会扫描其他目录,https://developer.android.com/training/data-storage/shared/media?hl=zh-cn
    “系统会自动扫描外部存储卷,并将媒体文件添加到以下明确定义的集合中:
    图片(包括照片和屏幕截图),存储在 DCIM/ 和 Pictures/ 目录中。系统将这些文件添加到 MediaStore.Images 表格中。”
    jeesk
        8
    jeesk  
       163 天前
    授予访问照片和视频、访问音频两项权限。 不就是能够读取所有的 照片和视频吗? 哪有问题了?
    jeesk
        9
    jeesk  
       163 天前
    不乱读必须使用系统的文件选择器或者图片选择器, 这一点 ios 和安卓并没有区别。 只是安卓没有适配而已。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3079 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:40 · PVG 08:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.