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()