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

Android 11 如何给应用开启 Scoped storage

  •  
  •   fuxinya · 2020-11-22 13:31:34 +08:00 via Android · 13172 次点击
    这是一个创建于 1495 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    垃圾系统 /滑稽 /
    gzxu
        18
    gzxu  
       2020-11-24 18:02:20 +08:00 via Android
    @skylancer #16 那个 ops 设了没用。代码里有特殊逻辑
    fox0001
        19
    fox0001  
       2021-03-10 09:50:33 +08:00 via Android
    对于顽固 app,或者可以考虑使用 Shelter/island 之类的工具,利用工作空间实现隔离,让它们在工作空间拉 shit
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5699 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:47 · PVG 09:47 · LAX 17:47 · JFK 20:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.