// Cache column indices.
val idColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media._ID)
val nameColumn =
cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)
val durationColumn =
cursor.getColumnIndexOrThrow(MediaStore.Video.Media.DURATION)
val sizeColumn = cursor.getColumnIndexOrThrow(MediaStore.Video.Media.SIZE)
while (cursor.moveToNext()) {
// Get values of columns for a given video.
val id = cursor.getLong(idColumn)
val name = cursor.getString(nameColumn)
val duration = cursor.getInt(durationColumn)
val size = cursor.getInt(sizeColumn)
val contentUri: Uri = ContentUris.withAppendedId(
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
id
)
// Stores column values and the contentUri in a local object
// that represents the media file.
videoList += Video(contentUri, name, duration, size)
}
}
2)插入媒体集(无需权限)
// Add a media item that other apps shouldn’t see until the item is
// fully written to the media store.
val resolver = applicationContext.contentResolver
// Find all audio files on the primary external storage device.
// On API <= 28, use VOLUME_EXTERNAL instead.
val audioCollection = MediaStore.Audio.Media
.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
val songDetails = ContentValues().apply {
put(MediaStore.Audio.Media.DISPLAY_NAME, “My Workout Playlist.mp3”)
put(MediaStore.Audio.Media.IS_PENDING, 1)
}
val songContentUri = resolver.insert(audioCollection, songDetails)
resolver.openFileDescriptor(songContentUri, “w”, null).use { pfd ->
// Write data into the pending audio file.
}
// Now that we’re finished, release the “pending” status, and allow other apps
// to play the audio track.
songDetails.clear()
songDetails.put(MediaStore.Audio.Media.IS_PENDING, 0)
resolver.update(songContentUri, songDetails, null, null)
3)更新自己创建的媒体集(无需权限)
删除类似
// Updates an existing media item.
val mediaId = // MediaStore.Audio.Media._ID of item to update.
val resolver = applicationContext.contentResolver
// When performing a single item update, prefer using the ID
val selection = “${MediaStore.Audio.Media._ID} = ?”
// By using selection + args we protect against