Android API 28 getBitmap 抛出 "no such column" 错误

Android API 28 getBitmap throwing "no such column" error

在 Android API 28,我正在尝试使用 albumID 获取特定专辑的专辑封面。该代码在 getBitmap

上抛出以下错误
android.database.sqlite.SQLiteException: no such column: _data (code 1 SQLITE_ERROR): , while compiling: SELECT _data FROM album_info WHERE (id=?)

下面的代码:

Uri imageUri_t = ContentUris.withAppendedId(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumID);
origImage = MediaStore.Images.Media.getBitmap(contentResolver, imageUri_t);

albumID 是之前使用游标查询收集到的 MediaStore.Audio.AudioColumns.ALBUM_ID 列。我也尝试过 MediaStore.Audio.Albums_ID,但结果相同。

值得注意的是,使用 API 29

中引入的较新的 loadThumnail,它在 API 29 和 30 中工作正常
origImage = contentResolver.loadThumbnail(imageUri_t, new android.util.Size(256, 256), null);

我明白了。这个错误有点用词不当,真正的错误是因为它找不到我请求的路径。我替换了这一行

Uri imageUri_t = ContentUris.withAppendedId(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, albumID);

有了这个

Uri imageUri_t = ContentUris.withAppendedId(Uri.parse("content://media/external/audio/albumart"), albumID);

我假设专辑封面保存在 API 29 和 API 30 的不同位置。不确定,但希望这对将来和我一样困惑的人有所帮助