android - 如何在 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 - RX 安卓单机
在进行 ROOM 查询时不订阅 Schedulers.io() 线程而是订阅主线程 - database - How do you prove data protection to your app users ensuring that database is encrypted?
- javascript - Question on how to work with class instances inside an array
- php - Magento 2 catalog price rules vanish after 2 days
- gitlab-api - How to list my private project from gitlab via personal token
- python - keras model.evaluate 似乎没有使用权重
- python - 如何将数据框行拆分为多个数据框?
- php - 从数据库通过连接到 REST 它是如何工作的?
- javascript - 如何从事件监听回调函数访问 vue3 方法
- python - 使用 Python 访问 Interactive brokers Risk Navigator