我尝试获取所有图像。我使用这段代码:
val galleryImageUrls = mutableListOf<String>()
val columns = arrayOf(MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID)
val orderBy = MediaStore.Images.Media.DATE_TAKEN
appContext.contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
null, null, "$orderBy DESC"
)?.use { cursor ->
while (cursor.moveToNext()) {
galleryImageUrls.add(cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA)))//get Image from column index
}
}
如果我使用 compileSdkVersion 28,则此代码有效,但它不适用于 compileSdkVersion 29。
你有什么想法我可以解决它吗?或者我应该使用存储访问框架?
最佳答案
This code works if I use compileSdkVersion 28
这将是不可靠的。不保证
DATA
将保存一个您可以使用的值。Do you have any ideas how I can fix it?
val galleryImageUrls = mutableListOf<Uri>()
val columns = arrayOf(MediaStore.Images.Media._ID)
val orderBy = MediaStore.Images.Media.DATE_TAKEN
appContext.contentResolver.query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
null, null, "$orderBy DESC"
)?.use { cursor ->
val idColumn = cursor.getColumnIndex(MediaStore.Images.Media._ID)
while (cursor.moveToNext()) {
val id = cursor.getLong(idColumn)
galleryImageUrls.add(ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id)
}
}
关于Android 10. 媒体商店。获取所有图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58005945/