从 Android 10 上的 contentProvider 加载所有图像

Load all images from contentProvider on Android 10

我目前正在使用以下代码从我的存储库中的 Android contentProvider 加载所有图像:

    override suspend fun getLocalImagePaths() = SuspendableResult.of<List<String>, Exception> {
        val result = mutableListOf<String>()
        val uri: Uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        val projection = arrayOf(MediaStore.MediaColumns.DATA)
        contentResolver.query(uri, projection, null, null, null)?.use {
            val dataIndex = it.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA)
            while (it.moveToNext()) {
                result.add(it.getString(dataIndex))
            }
        }
        result
    }

这会获取所有可用图像的绝对路径,它似乎在 Android 9 中工作,虽然有些图像无法加载(我正在使用 Glide),但在 Android 10 中我无法加载从上述方法返回的任何图像路径。我该怎么做?

    override suspend fun getLocalImagePaths() = SuspendableResult.of<List<Uri>, Exception> {
        val result = mutableListOf<Uri>()
        val uri: Uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI
        val projection = arrayOf(MediaStore.Images.Media._ID)
        contentResolver.query(uri, projection, null, null, null)?.use {
            while (it.moveToNext()) {
                result.add(
                    ContentUris.withAppendedId(
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        it.getLong(0)
                    )
                )
            }
        }
        result
    }