Kotlin中,如何获取本地相册的所有图片和视频和信息代码显示
时间: 2024-04-16 20:30:07 浏览: 325
要获取本地相册的所有图片和视频以及它们的信息,你可以使用 `ContentResolver` 和 `Cursor`。下面是一个示例代码,演示如何获取本地相册中的所有图片和视频,并显示它们的信息:
```kotlin
import android.content.ContentResolver
import android.provider.MediaStore
// 获取本地相册的所有图片和视频
fun getAllMediaFiles(contentResolver: ContentResolver) {
val projection = arrayOf(
MediaStore.Files.FileColumns._ID,
MediaStore.Files.FileColumns.DISPLAY_NAME,
MediaStore.Files.FileColumns.DATE_ADDED,
MediaStore.Files.FileColumns.MIME_TYPE
)
val selection = (MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE + " OR "
+ MediaStore.Files.FileColumns.MEDIA_TYPE + "="
+ MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO)
val sortOrder = MediaStore.Files.FileColumns.DATE_ADDED + " DESC"
val cursor = contentResolver.query(
MediaStore.Files.getContentUri("external"),
projection,
selection,
null,
sortOrder
)
cursor?.use {
val idColumn = it.getColumnIndexOrThrow(MediaStore.Files.FileColumns._ID)
val nameColumn = it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DISPLAY_NAME)
val dateAddedColumn = it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.DATE_ADDED)
val mimeTypeColumn = it.getColumnIndexOrThrow(MediaStore.Files.FileColumns.MIME_TYPE)
while (it.moveToNext()) {
val id = it.getLong(idColumn)
val name = it.getString(nameColumn)
val dateAdded = it.getLong(dateAddedColumn)
val mimeType = it.getString(mimeTypeColumn)
// 执行你的操作,例如显示图片或视频信息
println("ID: $id")
println("Name: $name")
println("Date Added: $dateAdded")
println("MIME Type: $mimeType")
println("---------------------")
}
}
}
// 在你的 Activity 或 Fragment 中调用该方法
fun getMediaFilesFromGallery() {
val contentResolver = context?.contentResolver
if (contentResolver != null) {
getAllMediaFiles(contentResolver)
}
}
```
在上面的代码中,`getAllMediaFiles()` 函数使用 `ContentResolver` 查询本地相册中的所有图片和视频。它指定了需要查询的列(ID、显示名称、添加日期和 MIME 类型),设置了查询条件(媒体类型为图片或视频),并按照添加日期降序排序。然后使用 `Cursor` 遍历查询结果,获取每个文件的信息,并执行相应操作,例如打印出文件的 ID、名称、添加日期和 MIME 类型。
你可以在你的 Activity 或 Fragment 中调用 `getMediaFilesFromGallery()` 方法来获取本地相册的所有图片和视频,并对它们进行操作。请注意确保你的应用有读取外部存储的权限。
阅读全文