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

pav*_*163 3 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
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果我使用 compileSdkVersion 28,则此代码有效,但不适用于 compileSdkVersion 29。您知道如何修复它吗?还是应该使用存储访问框架?

Com*_*are 11

如果我使用 compileSdkVersion 28,则此代码有效

它不会是可靠的。不能保证DATA将持有您可以使用的值。

你有什么想法我可以解决它吗?

    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)
        }
    }
Run Code Online (Sandbox Code Playgroud)