媒体文件管理¶
获取默认文件名¶
// 获取 20230313_234940_455_com_ave_vastgui_app.jpg 作为默认文件名
val name = ImageMgr.getDefaultFileName(".jpg")
通过 Uri 获取媒体文件¶
getFileByUri 会查询给定的 uri 的 DATA 字段值,如果有则返回对应的文件对象,否则返回空
val file:File? = ImageMgr.getFileByUri(path)
获取文件 Uri¶
// 新的媒体文件
val file = File(path, name)
// 获取媒体文件 Uri
uri = file.let {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
ImageMgr.getFileUriAboveApi30(it)
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ImageMgr.getFileUriAboveApi24(it, authority)
} else {
ImageMgr.getFileUriOnApi23(it)
}
}
对 Android 11 的适配(API 30开始)¶
关于文件路径的说明
对于媒体文件,你应该保存到共享的存储空间。
通过 getFileUriAboveApi30 ,会调用 contentResolver.insert() 方法插入一条新的记录,并将对应的 Uri 返回。
对 Android 7 的适配(API 24开始)¶
通过 getFileUriAboveApi24 ,会调用 FileProvider.getUriForFile 方法获取 Uri 。
对 Android 6 及以下版本的适配¶
通过 getFileUriOnApi23 , 会调用 Uri.fromFile() 直接获取 Uri 。
获取共享存储空间¶
// 对应路径 /storage/emulated/0/Pictures
val dir = ImageMgr.getSharedFilesDir()
获取专属存储空间¶
// 对应路径 /storage/emulated/0/Android/data/com.ave.vastgui.app/files/Pictures
val dir = ImageMgr.getExternalFilesDir()