Android 10. MediaStore.Получение всех изображений - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь получить все изображения.Я использую этот код:

 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. У вас есть идеи, как я могу это исправить?Или я должен использовать каркас доступа к хранилищу?

1 Ответ

1 голос
/ 19 сентября 2019

Этот код работает, если я использую compileSdkVersion 28

Он не будет надежным.Нет гарантии, что DATA будет содержать значение, которое вы можете использовать.

, но оно не работает на compileSdkVersion 29

Это потому, что 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)
        }
    }
...