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

Android Q dp2 已经默认隔离应用存储

  •  1
     
  •   yukiww233 · 2019-04-04 11:17:20 +08:00 · 16647 次点击
    这是一个创建于 2094 天前的主题,其中的信息可能已经有所发展或是发生改变。
    读写外置存储权限分成[音乐][照片和视频]两个权限
    未适配 Q 的文件管理器已经无法访问到公共存储空间
    55 条回复    2019-04-24 19:59:16 +08:00
    gz911122
        1
    gz911122  
       2019-04-04 11:22:41 +08:00
    不错啊这个改动
    yukiww233
        2
    yukiww233  
    OP
       2019-04-04 11:30:01 +08:00
    honeycomb
        3
    honeycomb  
       2019-04-04 11:42:29 +08:00 via Android
    普大喜奔!

    beta1 需要改一个设置,重启后才会启用隔离应用存储。
    Vegetables
        4
    Vegetables  
       2019-04-04 11:54:22 +08:00 via Android
    pmispig
        5
    pmispig  
       2019-04-04 11:55:38 +08:00
    就等解决不给权限不让用的问题,就可以转安卓了,iPhone 这狗屎信号去死吧
    expy
        6
    expy  
       2019-04-04 12:09:21 +08:00
    补上链接,https://developer.android.google.cn/preview/privacy/scoped-storage
    共享集合好像还能拉,而且不用给权限。
    showgood163
        7
    showgood163  
       2019-04-04 12:13:12 +08:00 via Android
    好事,鉴于某些 app 的流氓表现,放沙盒都不为过
    honeycomb
        8
    honeycomb  
       2019-04-04 12:15:03 +08:00 via Android
    @pmispig 不给权限不让用的问题应该还是解决不了(如果不考虑 appops )。

    但是最关键的两个内容都已经有比较妥善的方案了,所以还是不错的:
    1,设备识别码(不再提供)
    2,公用存储(像 iOS 那样按应用隔离)
    VZikl1
        9
    VZikl1  
       2019-04-04 12:16:13 +08:00
    更新过后 微信能正常打开
    des
        10
    des  
       2019-04-04 12:28:27 +08:00
    终于有了,不然真的是要被这些 app 气死了
    Love4Taylor
        11
    Love4Taylor  
       2019-04-04 12:31:13 +08:00 via Android
    QQ, Wechat, Bilibili 等一票 App 无法获取媒体文件了
    pmispig
        12
    pmispig  
       2019-04-04 12:38:53 +08:00
    @honeycomb 如果官方愿意做其实不难,就看 google 的想法
    daozhihun
        13
    daozhihun  
       2019-04-04 12:41:57 +08:00 via Android
    太棒了,流氓垃圾应用总算不能乱拉屎了
    hhhsuan
        14
    hhhsuan  
       2019-04-04 12:45:00 +08:00 via Android
    targetsdkversion 29 的应用才会限制
    maomaomao001
        15
    maomaomao001  
       2019-04-04 12:46:46 +08:00   ❤️ 1
    话说,有没有一种方案,app 要的权限都给
    那存储做个例子

    给存储权限,只不过呢,可选择给模拟环境,或者真实的
    给模拟环境的话,这个 app 始终能拿到一个伪造的类似空白的安卓机那样的文件目录 (没有个人文件了)
    这样不就可以完全避免 app 偷偷窥探用户隐私了吗?

    形象一点的说,
    假设有个 app A,不给存储权限不让用,然而给了权限之后这个 A 又会偷偷的访问 tencent 目录 (或者其他应用的目录等),获取用户信息,窃取隐私,
    所以有没有办法,既给 App 权限,又不让它拿到真实的


    通讯录权限类似
    zmz125000
        16
    zmz125000  
       2019-04-04 12:51:16 +08:00 via Android
    @maomaomao001 xprivacy
    Love4Taylor
        17
    Love4Taylor  
       2019-04-04 12:52:55 +08:00 via Android   ❤️ 1
    @hhhsuan
    >The restrictions on accessing files in external storage apply only to apps that target Android Q, or apps that are newly installed on a device running Android Q.

    注意看 or 后面的...
    exip
        18
    exip  
       2019-04-04 13:25:55 +08:00 via Android
    @maomaomao001 你说的不就是 app ops 的功能嘛
    hhhsuan
        19
    hhhsuan  
       2019-04-04 13:46:09 +08:00
    @maomaomao001 #15 Android Q 就是这样,给每个 app 搞了个沙盒。
    terrytw
        20
    terrytw  
       2019-04-04 13:47:21 +08:00   ❤️ 1
    Q 的四项更新:剪贴板后台 app 无法访问,权限可以仅 app 前台时授权,默认不给 imei 码,再加上这个存储权限管控
    可以说 android 的隐私保护算是从无到有了
    ysc3839
        21
    ysc3839  
       2019-04-04 14:07:09 +08:00 via Android
    @pmispig @honeycomb 不给权限不让用是无法解决的,除非不再提供这个权限。
    即使用 App Ops 忽略了某个权限,应用也能发现读出来的数据是空的从而拒绝工作。只有返回一个假的数据才行。
    longaiwp
        22
    longaiwp  
       2019-04-04 14:28:15 +08:00
    @hhhsuan 你先看清楚,很多项都是针对 Android Q 完全禁止的,不看 target 版本
    redsonic
        23
    redsonic  
       2019-04-04 14:34:59 +08:00
    然而国产魔改 android 到时候仍然会给这些大型流氓 app 开白名单。只要 android 还是开源的,权限这个问题无解。
    codingadog
        24
    codingadog  
       2019-04-04 14:37:26 +08:00 via Android
    @maomaomao001 storage redirect
    wangxiaoaer
        25
    wangxiaoaer  
       2019-04-04 15:02:10 +08:00
    [音乐][照片和视频] 这是什么逻辑啊? 普通 pdf 等文件该放到哪里呢?
    yukiww233
        26
    yukiww233  
    OP
       2019-04-04 15:09:38 +08:00
    @wangxiaoaer #25
    对于照片和视频共享集合,请使用 MediaStore.Images 或 MediaStore.Video。
    对于音乐共享集合,请使用 MediaStore.Audio。
    对于下载内容共享集合,请使用 MediaStore.Downloads。

    用户自己放的文件只能通过 DocumentsProvider 选取了
    orangeade
        27
    orangeade  
       2019-04-04 15:09:56 +08:00 via Android
    @redsonic 不用国产不就行了
    honeycomb
        28
    honeycomb  
       2019-04-04 15:44:33 +08:00 via Android
    @ysc3839 确实可以如此反制 appops,但实际这么做的应用非常之少。

    不过就前面提到的公共储存与设备永久识别码的部分来说,Q 的改动属于“不再提供这个权限(能力)”,因此是解决了。

    @wangxiaoaer 参照 iOS 的做法即可
    honeycomb
        29
    honeycomb  
       2019-04-04 15:46:41 +08:00 via Android
    @Love4Taylor 那就无法获取呗,谁让它们不肯用 storage access framework API
    honeycomb
        30
    honeycomb  
       2019-04-04 15:47:06 +08:00 via Android
    @hhhsuan no,任何 targetsdk 的应用都会受到该限制
    taresky
        31
    taresky  
       2019-04-04 15:48:29 +08:00 via iPhone
    @pmispig #4 除非 android 禁止第三方 app 商店
    orangeade
        32
    orangeade  
       2019-04-04 16:02:14 +08:00 via Android
    @taresky 那还不如直接砍掉 Android 算了
    wangxiaoaer
        33
    wangxiaoaer  
       2019-04-04 17:03:50 +08:00
    @yukiww233 #26 就是说假如希望发送自己的文件,首先 qq 要申请 download 权限,通过自己要把文件放到 download 文件夹里面?

    这样是挺好,但就是有点麻烦,而且学习成本有点高。

    另外,文件管理器这种应用怎么办?
    yukiww233
        34
    yukiww233  
    OP
       2019-04-04 17:26:38 +08:00
    @wangxiaoaer #33
    并不行,对应权限只能访问其他应用共享到 shared collection 的文件,没在 MediaStore 注册文件只能用 document provider 选取。
    按目前的 api 看来第三方文件管理器全挂,国内的 rom 大概率也不会开启这个特性
    kwanzaa
        35
    kwanzaa  
       2019-04-04 17:27:13 +08:00
    @orangeade Fuchsia:你这么说我可不困了啊
    cstj0505
        36
    cstj0505  
       2019-04-04 17:30:06 +08:00
    imei 不给我记得有些应用是无法启动的吧
    hmzt
        37
    hmzt  
       2019-04-04 17:37:26 +08:00
    感觉意义不大,还很麻烦,到时候 app 不给权限不让用还不是要给
    应该禁止 app 主动获取数据,必须由用户发起,另外设置即使用户发起也不允许被其他 app 访问的私密数据.
    clouds
        38
    clouds  
       2019-04-04 17:48:22 +08:00 via Android
    其实对于工作用手机来说,国内使用安卓手机还有一个推送问题。这个只能期待工信部主推的统一推送联盟起作用了。
    HFX3389
        39
    HFX3389  
       2019-04-04 18:19:48 +08:00   ❤️ 1
    @clouds #38 我觉得这个统一推送联盟暂时起不了太大的风浪。

    统一推送联盟的“绿色 APP 公约”:

    1.从维护国家和全行业整体利益的高度出发,严格遵守国家的各项法律法规,积极进行内容审核和把控,切实践行社会主义核心价值观,为用户提供积极健康的内容,创造良好的文化环境。

    2.Target SDK Version 最低:24。

    3.不在启动应用时强制请求『读取手机状态和身份( READ_PHONE_STATE )』权限。

    4.App 限制交叉唤醒、链式启动。除用户的主动交互触发外,避免启动其它应用未处于运行中的进程。

    5.( Target SDK Version >= 28 可豁免) App 让设备 CPU 尽可能处于休眠状态,请求唤醒 CPU 的周期性任务时间间隔尽可能大于 1 小时,并避免在不必要的时间段(如夜间)继续调度周期性事件。

    6.( Target SDK Version >= 26 可豁免) App 避免不必要常驻后台的行为。在应用进入后台的短时间内须停止所有后台服务,且在除了收到广播和正常触发的后台行为期间不可以再启动新的后台服务。

    ----

    除了第 1、2 条以外都莫得人去遵守!特别是第 3、4 条!

    另外,“绿色 APP ”的“三大权益”:



    我认为对于 BAT 之类的厂商来说,有跟没有一样!

    第 1 条:统一推送联盟官方微信公众号,官方微博的定期公告展示。

    (都依托在微信和微博这两个大厂 APP 上了,我觉得腾讯、新浪不会加入!)

    第 2 条:统一推送通道层接口标准及 SDK 的优先试用权

    (大厂的推送难道还要依靠“统一推送通道”,不见得吧,即使微信不用“统一推送通道”用自己的通道,难道系统还能强制杀掉微信的推送通道服务?用户也不会用这种系统吧)

    第 3 条:统一推送联盟旗下相关业务的优先申请试用权限。

    (这个我认为一样对大厂没啥用,除非相关业务获得的数据是大厂无法获得的)

    ----

    以上都是个人猜测!毕竟这种依靠自觉的类似“公约”“约定”在安卓这个平台上并没有多大实际的效果!安卓这个平台就是最有力的证明!
    HFX3389
        40
    HFX3389  
       2019-04-04 18:23:27 +08:00
    改一下:
    阿里巴巴(中国)有限公司
    北京百度网讯科技有限公司
    深圳市腾讯计算机系统有限公司
    系统一推送联盟的“副理事长”
    ----
    新浪网技术(中国)有限公司
    系统一推送联盟的“会员单位”
    clouds
        41
    clouds  
       2019-04-04 20:37:25 +08:00 via iPhone
    @HFX3389 在国内,不一定哦。工信部还是有点用的吧
    xingda920813
        42
    xingda920813  
       2019-04-04 21:04:52 +08:00
    这个改变总体上我认为有 3 点欠考虑的地方:

    1, 对于第三方文件管理器, SAF 提供的 API 过于有限 (尽管有 OPEN_DOCUMENT_TREE), 无法让全功能的文件管理器 (如 Root Explorer, Total Commander, Solid Explorer 等) 改造后继续像以前版本一样工作; 备份管理器等工具应用也会受重创;
    (系统自带的"文件"使用了 MANAGE_DOCUMENTS 等签名级别的权限, 非普通 App 可获取)

    2, SAF 需使用 ContentProvider API, 需要进行 Binder 通信, 相比 File API 性能上存在劣势;

    3, SAF 不在 NDK 中, 不能在 native 代码 (C/C++) 中访问;

    我认为最好的是把非沙盒化的存储权限 (以前版本中的 WRITE_EXTERNAL_STORAGE) 做成一个特殊权限, 路径在"设置"->"应用"->扩展菜单->"特殊访问权限"->存储 (例), 像设备管理器权限一样, 但不提供 Intent 跳转, 用户只能手动去设置一级一级进入. 这样引导用户操作的成本会很高, 可阻止普通的非工具类应用滥用或强制索取;

    或者在 Google Play 中上架为工具类应用的 App 才可申请 STORAGE 权限.
    huaxianyan
        43
    huaxianyan  
       2019-04-04 22:14:06 +08:00
    @terrytw 我觉得剪贴板权限可控是 OK 的,一刀切就很麻烦了
    nanaw
        44
    nanaw  
       2019-04-04 22:32:07 +08:00
    @huaxianyan 还真不能可控。对国内来说 可控==滥用 非要使用应该以普通用户无法实现的方式授予( adb,root )才不会被滥用
    @xingda920813 这个直接用 adb 或者 root 才能授予特权解决吧。反正只要普通用户能授予的权限国产应用必然会滥用它
    Maskeney
        45
    Maskeney  
       2019-04-05 01:18:26 +08:00
    真是棒棒
    Maskeney
        46
    Maskeney  
       2019-04-05 01:18:43 +08:00
    但是我感觉国内厂商总会有各种办法来绕过的
    shenmegui
        47
    shenmegui  
       2019-04-05 07:32:43 +08:00 via Android
    我几年前就说过,安卓只有打倒重来一条路。


    太太太晚了。
    shan999abc
        48
    shan999abc  
       2019-04-05 07:37:05 +08:00 via Android
    @pmispig 🤙👆👍👍👍👍
    wangxiaoaer
        49
    wangxiaoaer  
       2019-04-05 08:14:01 +08:00 via Android
    @shenmegui 失望了,权限问题搞了多少年了,现在跟屎一样,解决不了退出问题,真不知道他们的脑回路是什么。

    现在又来搞存储使用的问题,不看好。
    evagreenworking
        50
    evagreenworking  
       2019-04-05 08:29:45 +08:00 via Android
    还差读取应用列表这个权限没放给用户,没 xprivacy 只能用 shelter 或者 island 替代
    gzxu
        51
    gzxu  
       2019-04-05 08:46:59 +08:00 via Android
    @evagreenworking 用 android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES 参数依然可以访问 Island 外的应用列表,就像用 getprop 依然可以获得 IMEI 一样(至少我的 ROM 上面是这样的,我觉得后者可能是因为 ROM 制作者没注意,留了一个 ro.ril.oem.imei )

    顺便,这个“绿色 APP 公约”就是 Island 的作者最先发起的,牛逼
    gzxu
        52
    gzxu  
       2019-04-05 09:02:17 +08:00 via Android
    #42 @xingda920813 系统级开了权限的话不让上架也影响不大吧,最近百度地图就下架了,也不知道为什么。其实我觉得大家用 /sdcard 无非两个原因,一个是 PM (尤其是第三方 SDK 的代码)要求确实要在应用被删除之后存储 ID (跨应用存储 ID 这个其实方法太多了,不一定需要 /sdcard ),另一个就是"/sdcard"这串字符本身不需要动态生成,可以写成常量,用起来方便省事,一直用一直爽。不过 Google 这么一来,至少开发有底气跟 PM 说“这个功能做不了”了,就像 Oreo 里面对私有 API 的限制虽然可以绕过,但态度就是放在那里一样
    C2G
        53
    C2G  
       2019-04-05 09:23:18 +08:00 via Android
    @maomaomao001 #15 存储重定向可以实现(奥利奥使用体验良好)
    zzzim
        54
    zzzim  
       2019-04-05 18:02:01 +08:00 via Android
    干的漂亮
    lee233333
        55
    lee233333  
       2019-04-24 19:59:16 +08:00
    请问升级 android q 后有通话记录么??我升级后怎么打电话都没有记录。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5427 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:59 · PVG 15:59 · LAX 23:59 · JFK 02:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.