Android 10 Scoped Storage,2024最新Android算法相关面试大全


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

存储于外部存储中的文件意味着,这些文件不是应用程序中功能运行时的必要文件,但从技术上讲用户和其他应用程序都可以访问这些文件,但它们无法为应用程序外部的用户提供价值,此目录可视为内部存储的补充方案。

外部存储对应的路径为 /storage/Android/data/<包名>/files

根据上面的定义,无论内部存储或者外部存储都应该只保存与我们自己的 App 有关联的数据。例如使用内部存储保存用户信息、使用外部存储保存只有本 App 才能打开的专门格式的文件。需要注意当用户卸载 App 的时候,内部存储和外部存储都会被自动删除。

针对用户行为产生的文件,例如下载的图片、保存的视频等。Google 要求我们保存在系统公共目录中,这样别的 App 也能访问到这些文件,例如 Pictures、Downloads。这里我们把用户行为产生的文件分为两大类:多媒体文件和其他文件,官方推荐多媒体文件存放在系统中有专门的目录:Music、Movies、Pictures等,其他文件一律保存在下载目录中:Downloads。

所以到这里我想问一下那些 App 的开发者,你们在开发的时候有读过官方文档吗?

前面我也讲到了在 Android 10.0 之前,存储文件需要获取 WRITE_EXTERNAL_STORAGE 权限,得到这个权限之后,App 就可以通过 Environment.getExternalStorageDirectory() 在根目录下面随意创建文件了,但是(划重点!)Android 10.0 之后就不行了,没想到吧?

Android 10 Scoped Storage

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在 Android 10 上面,上图中的两个访问根目录的 API 已经被弃用了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

执行上面这段创建文件夹的代码根本不会其任何作用,这样 App 就再也无法肆意创建文件夹了。我们之前说了存储文件需要 WRITE_EXTERNAL_STORAGE 权限,在 Android Q 中我们操作内部和外部存储时,不再需要声明任何权限,可以直接使用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

同时文档中也明确规定了,多媒体文件需要通过 MediaStore API 访问,其他文件通过系统内置文件管理器访问(Storage Access Framework API)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为官方意识到,大多数 App 申请了权限之后,仅是为了操作外部存储目录,所以他们不需要这么多的访问空间,同时也正是因为之前的存储权限逻辑,给了其他 App 漏洞去肆意的乱建文件夹,从而引发了用户数据泄漏。所以 Google 取消了外部存储权限限制,同时也增加了公共目录的访问限制。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以 Scoped Storage 的设计原则就是:更好的管理文件、保护 App 的数据、保护用户的数据。

说了这么多,我们来看一下 Scoped Storage 具体有哪些修改,以及我们需要注意的地方,这里我列出来一些重要的点供大家参考:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当然 Scoped Storage 也不是马上强制执行,Google 给了一定的缓冲期让开发者们有时间充分适配。

  1. targetSDK = 29, 默认开启 Scoped Storage, 但可通过在 manifest 里添加 requestLegacyExternalStorage = true 关闭

  2. targetSDK < 29, 默认不开启 Scoped Storage, 但可通过在 manifest 里添加requestLegacyExternalStorage = false 打开

如果你所做的 App 属于文件管理器或数据备份应用,你需要在 Google Play 提交申请信息,获得白名单权限之后才可以访问除自己应用以外的文件。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
这是官方依据 Scoped Storage 所划分的存储区域访问图。目前 Scoped Storage 部分内容还在调整,所以在现在的 Android 10 上面并没有强制执行,这一切调整会在 Android 下一个 Release 上完善并开启。
关于 Scoped Storage 的信息很杂也很碎,但是我们只需要关注两点就好了:

  1. 多媒体文件需要使用 MediaStore API 访问

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

学习分享

在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了

很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘

如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。

2021最新上万页的大厂面试真题

七大模块学习资料:如NDK模块开发、Android框架体系架构…

只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。

这份体系学习笔记,适应人群:
**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。
**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。
第三,到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。如有需要获取完整的资料文档的朋友点击我的GitHub免费获取。

,部分未展示内容以截图方式展示 。如有需要获取完整的资料文档的朋友点击我的GitHub免费获取。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值