Android 10的ScopedStorage(分区存储)的介绍

Android 10的ScopedStorage(分区存储)的介绍

.

Scoped Storage的由来

Android长久以来都支持外置存储空间这个功能,也就是我们常说的SD卡存储。这个功能使用得极其广泛,几乎所以开发者在开发的时都喜欢在SD卡的根目录下建立一个自己应用的专属的目录,用来存放各类文件和数据。导致SD卡的文件管理变的异常混乱。而且用户即使我卸载了一个完全不再使用的程序,它所产生的垃圾文件却可能会一直保留在我的手机上,不会被自动删除,这就使用户的存储空间一直处于十分紧张的状态,还浪费了大量的存储资源。

为了解决上述问题,Google 在Android 10当中加入了Scoped Storage分区存储机制。

.

.

简介

.

介绍:

为了让用户更好地管理自己的文件并减少混乱,以 Android 10(API 级别 29)及更高版本为目标平台的应用在默认情况下被赋予了对外部存储空间的分区访问权限(即分区存储)。此类应用只能看到本应用专有的目录(通过 context.getExternalFilesDir() 访问)以及本应用所创建的特定类型的媒体文件。如果你的应用不符合该条件的会以兼容模式运行,兼容模式跟以前一样,根据路径可以直接存储文件。但很有可能随着SDK的更新而无法使用,所以建议尽早完成Scoped Storage 的适配。

说明:

分区存储(Scoped Storage)机制,是一种安全机制,用于防止应用读取其他应用的数据;并具有以下特点:

  1. 每个应用程序都有自己的存储空间,即 应用专属目录

  2. 应用程序不能翻过自己的目录,去访问公共目录

  3. 应用程序请求的数据都要通过权限检测,不符合要求不会被放行

  4. 使用 MediaStore 相关API可以让你访问共享的存储空间

注意:

通过android:requestLegacyExternalStorage="true"设置兼容模式,在Android 11中以上配置依然有效,但仅限于targetSdkVersion小于或等于29的情况。如果你的targetSdkVersion >=30,Scoped Storage就会被强制启用,android:requestLegacyExternalStorage="true"标记将会被忽略。

.

.

Scoped Storage权限的介绍

介绍:

默认情况下,对于targetSdkVersion >= 29的应用,其访问权限范围限定为Scoped Storage。此应用无需请求与存储相关的用户权限,即可以查看外部存储中以下类型的文件:

  • 应用外部特定目录中的文件(使用getExternalFilesDir()访问)

  • 应用自己创建的照片、视频和音频(通过MediaStore访问)

<
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值