赞
踩
为了帮助您的应用更顺畅地使用第三方媒体库,Android 11 允许您使用除 MediaStore API 之外的 API 访问共享存储空间中的媒体文件。不过,您也可以转而选择使用以下任一 API 直接访问媒体文件:
File API。
原生库,例如 fopen()。
简单来说就是,可以通过 File()
等API 访问有权限访问的媒体集了。
通过 File ()
等直接通过路径访问的 API 实际上也会映射为MediaStore
API 。
按文件路径顺序读取的时候性能相当;随机读取和写入的时候则会更慢,所以还是推荐直接使用 MediaStore
API。
MANAGE_EXTERNAL_STORAGE
: 类似以前的 READ_EXTERNAL_STORAGE
+ WRITE_EXTERNAL_STORAGE
,除了应用专有目录都可以访问。
应用可通过执行以下操作向用户请求名为所有文件访问权限的特殊应用访问权限:
MANAGE_EXTERNAL_STORAGE
权限。ACTION_MANAGE_ALL_FILES_ACCESS_PERMISSION
intent 操作将用户引导至一个系统设置页面,在该页面上,用户可以为您的应用启用以下选项:授予所有文件的管理权限。使用 MediaStore
增删改查媒体集
使用 Storage Access Framework
访问文件集
实际上 MediaStore
是以前就有的 API ,不同的是过去主要通过 MediaStore.Video.Media._DATA
这个 colum 请求原始数据,可以得到绝对Uri
,现在需要请求MediaStore.Video.Media._ID
来得到相对Uri
再进行处理。
// Need the READ_EXTERNAL_STORAGE permission if accessing video files that your
// app didn’t create.
// Container for information about each video.
data class Video(
val uri: Uri,
val name: String,
val duration: Int,
val size: Int
)
val videoList = mutableListOf()
val projection = arrayOf(
MediaStore.Video.Media._ID,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.DURATION,
MediaStore.Video.Media.SIZE
)
// Show only videos that are at least 5 minutes in duration.
val selection = “${Media
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。