Android 10. 媒体商店。获取所有图像

标签 android mediastore android-10.0

我尝试获取所有图像。我使用这段代码:

 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/

相关文章:

android - 防止字符被绘制为表情符号

java - Android donut chart 根据时间戳填充多种颜色

android - WifiP2pManager.discoverPeers 在 android 10 中失败

android - Android 9+ 上的媒体投影问题

android - requestCellInfoUpdate() 的正确用法是什么?

android - 寻找适用于 Android 2.3 ARM 平台的 iptables 二进制文件?

java - Android BottomNavigation和Tabs,第一次点击后 View 消失

android - 分区存储 : how to delete multiple audio files via MediaStore?

android - 使用 Intent 录制视频保存空文件

android - MediaStore 获取图像高度/宽度