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

Android 11 如何给应用开启 Scoped storage

  •  
  •   fuxinya · 3 天前 via Android · 1674 次点击

    可能是应用 target API 不高,老的应用申请存储权限后仍然可以在存储空间根目录乱拉屎。有没有强制开启的办法

    18 条回复    2020-11-24 18:02:20 +08:00
    beginor
        1
    beginor   3 天前 via Android
    下载个“存储重定向”吧, 老应用不升级的话貌似没办法。
    PlainTech
        2
    PlainTech   3 天前
    推荐使用 “存储空间隔离” ,https://sr.rikka.app
    WebKit
        3
    WebKit   3 天前 via Android
    手机自身木有办法。这也是为了兼容那些老版本应用。
    dingwen07
        4
    dingwen07   3 天前 via iPhone
    必须要目标 API 版本 30 才会强制启用分区存储,而且如果 app 在安卓 10 安装的那也可以申请保留权限
    好像即使是 API 版本 30 也可以可以申请 MANAGE_EXTERNAL_STORAGE 来获取文件权限,但是 Google Play 不会允许不需要这个权限的 app 申请这个权限,也就是说国产 app 还是可以作妖
    beginor
        5
    beginor   3 天前 via Android
    @PlainTech 新版本叫“存储空间隔离”,旧版本叫“存储重定向” 不过新版本依赖“shizuku”
    fansangg
        6
    fansangg   3 天前
    @beginor 需要 root 的吧
    Cytion
        7
    Cytion   3 天前
    @fansangg 使用 Shizuku 模式的话靠 ADB 即可
    beginor
        8
    beginor   3 天前 via Android
    @fansangg root 或者 adb
    beginor
        9
    beginor   3 天前 via Android
    另外再装一个 App Ops, 也是存储空间隔离的作者开发的应用, 可以应对国产应用乱要权限的问题。

    很多国产应用使用 App Ops 忽略权限之后依然可以正常运行, 特别是文件系统权限。
    merpyzf
        10
    merpyzf   3 天前
    看 Google Play 的上架政策,目前的要求的 TargetApiVersion 还是 29,等明年差不多可以强制要求 30 。但即便到了 30 谷歌还是为那些需要依赖文件存储的一些应用留了后门,依然可以申请访问访问所有本地存储的权限。但谷歌会去审核所上架的应用是否必须需要该权限。所以,就等 Google 什么时候强制必须 30 了。
    gzxu
        11
    gzxu   3 天前 via Android
    Android 10 上实测,用 appops 将 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 设为 deny,应用就没办法访问 /sdcard 了。不放心的话可以用 Termux 测试一下

    这种情况下应用可以正常访问 /sdcard 上的私有目录,比起 Android 9 下的表现,兼容性更好
    WebKit
        12
    WebKit   2 天前 via Android
    即使开启了 scoped storage 还是能通过 SAF 请求整个文件权限。。。对于毒瘤应用来说。
    RikkaW
        13
    RikkaW   2 天前 via Android
    是什么让你觉得,一个“一键式的能改变使用存储空间的行为,又完全不影正常功能”的东西是可能的 😶
    heganyuliang
        14
    heganyuliang   2 天前 via Android
    @Cytion 没看到能用 shizuku 啊?我在 play store 和酷安下的还是必须要 root
    terrytw
        15
    terrytw   2 天前
    @heganyuliang storage redirect 必须 root
    skylancer
        16
    skylancer   2 天前
    @gzxu 你推荐了 appops, 就没发现里面 isolated_storage 是个 ops ?
    Osk
        17
    Osk   1 天前 via Android
    不需要这功能,谢谢。

    因为系统自带的各路特权 App 首先就带头往 /sdcard 扔垃圾。

    垃圾系统 /滑稽 /
    gzxu
        18
    gzxu   1 天前 via Android
    @skylancer #16 那个 ops 设了没用。代码里有特殊逻辑
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3137 人在线   最高记录 5268   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 13:02 · PVG 21:02 · LAX 05:02 · JFK 08:02
    ♥ Do have faith in what you're doing.