首页 > 解决方案 > 如何在 API 29+ 中获取 MediaStore 专辑项目的缩略图?

问题描述

我正在尝试在 API 29+ 中获取媒体商店专辑项目的缩略图。执行此操作的所有旧方法(如 MediaStore.Audio.Albums.ALBUM_ART 或 MediaStore.Images.Thumbnails)已被弃用,并且在使用新的范围存储时不起作用。

我已经尝试使用所有已弃用的方法中提到的新 ContentResolver.loadThumbnail 方法,但它总是为我返回 null。

val projection = arrayOf(
    MediaStore.Audio.Albums._ID,
)

val cursor = context.contentResolver.query(
    MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
    projection,
    null,
    null,
    null
)

cursor?.apply {
    if (moveToFirst()) {
        val albumIdIndex = getColumnIndex(MediaStore.Audio.Albums._ID)

        val albumId = getLong(albumIdIndex)

        val uri = ContentUris.appendId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI.buildUpon(), albumId).build()

        // albumArt is always null
        val albumArt = context.contentResolver.loadThumbnail(uri, Size(640, 640), null)
    }

    close()
}

缩略图始终为空,但应该是有效的位图

标签: android

解决方案


推荐阅读