-
需要申请
READ_EXTERNAL_STORAGE权限:
通过MediaStore API对所有的媒体集进行查询、修改、删除的操作。 -
调用
Storage Access Framework API:
会启动系统的文件选择器向用户申请操作指定的文件
新的访问方式:

Android 11 ®:
Android 11 ® 在 Android 10 (Q) 中分区存储的基础上进行了调整
1. 新增执行批量操作
为实现各种设备之间的一致性并增加用户便利性,Android 11 向 MediaStore API 中添加了多种方法。对于希望简化特定媒体文件更改流程(例如在原位置编辑照片)的应用而言,这些方法尤为有用。
MediaStore API 新增的方法
| 方法 | 说明 |
|---|---|
| createWriteRequest (ContentResolver, Collection) | 用户向应用授予对指定媒体文件组的写入访问权限的请求。 |
| createFavoriteRequest (ContentResolver, Collection, boolean) | 用户将设备上指定的媒体文件标记为 “收藏” 的请求。对该文件具有读取访问权限的任何应用都可以看到用户已将该文件标记为 “收藏”。 |
| createTrashRequest (ContentResolver, Collection, boolean) | 用户将指定的媒体文件放入设备垃圾箱的请求。垃圾箱中的内容在特定时间段(默认为 7 天)后会永久删除。 |
| createDeleteRequest (ContentResolver, Collection) | 用户立即永久删除指定的媒体文件(而不是先将其放入垃圾箱)的请求。 |
系统在调用以上任何一个方法后,会构建一个 PendingIntent 对象。应用调用此 intent 后,用户会看到一个对话框,请求用户同意应用更新或删除指定的媒体文件。
2. 使用直接文件路径和原生库访问文件
为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 访问共享存储空间中的媒体文件。不过,您也可以转而选择使用以下任一 API 直接访问媒体文件:
File API。
原生库,例如 fopen()。
简单来说就是,可以通过 File() 等API 访问有权限访问的媒体集了。
性能:
通过 File () 等直接通过路径访问的 API 实际上也会映射为MediaStore API 。
按文件路径顺序读取的时候性能相当;随机读取和写入的时候则会更慢,所以还是推荐直接使用 MediaStoreAPI。
3. 新增权限
MANAGE_EXTERNAL_STORAGE : 类似以前的 READ_EXTERNAL_STORAGE + WRITE_EXTERNAL_STORAGE ,除了应用专有目录都可以访问。
应用可通过执行以下操作向用户请求名为所有文件访问权限的特殊应用访问权限:
- 在清单中声明
MANAGE_EXTERNAL_ST

5737

被折叠的 条评论
为什么被折叠?



