MediaStore.Files.FileColumns.DATA has been deprecated, what to use instead?

Viewed 1575

I am creating an app in which I list the recent images and videos from the user's gallery and display them on a RecyclerView using the file path. The code below is working on Android 7, but Android Studio is warning that MediaStore.Files.FileColumns.DATA has been deprecated. What to use instead?

// Get relevant columns for use later.
        val projection = arrayOf(
                MediaStore.Files.FileColumns.DATA
        )

        // Return only video and image metadata.
        val selection = (MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE
                + " OR "
                + MediaStore.Files.FileColumns.MEDIA_TYPE + "="
                + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO)

        val queryUri: Uri = MediaStore.Files.getContentUri("external")

        val cursorLoader = CursorLoader(
                requireContext(),
                queryUri,
                projection,
                selection,
                null,
                MediaStore.Files.FileColumns.DATE_ADDED + " DESC" // Sort order.
        )

        val cursor: Cursor? = cursorLoader.loadInBackground()

        if (cursor!!.moveToFirst()) {
            do {
                val columnIndex = cursor.getColumnIndex(projection[0])
                val filePath = cursor.getString(columnIndex)
                val mimeType = URLConnection.guessContentTypeFromName(filePath)

                if (mimeType != null && mimeType.startsWith("image")) {
                    mediaList.add(GalleryMedia(filePath, "image"))
                } else if (mimeType != null && mimeType.startsWith("video")) {
                    mediaList.add(GalleryMedia(filePath, "video"))
                }

            } while (cursor.moveToNext())
        }
        cursor.close()
0 Answers
Related