I am trying to implement a recyclerview which will show all the music files in my android device with a 10 per page pagination and contains a search text. I am using content resolver for this. My application is targeting till android 12. So my existing code is like:
fun getAllMusicFilesInDevice(offset: Int, searchText: String){
val tempAudioList: MutableList<Album> = ArrayList()
        val uri: Uri = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
            MediaStore.Audio.Media.getContentUri(MediaStore.VOLUME_EXTERNAL)
        else
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
        val projection = arrayOf(
            MediaStore.Audio.AudioColumns.DATA,
            MediaStore.Audio.Media.DISPLAY_NAME,
            MediaStore.Audio.AudioColumns.ALBUM,
            MediaStore.Audio.ArtistColumns.ARTIST,
        )
        val selection = MediaStore.Audio.Media.DISPLAY_NAME + " LIKE ?"
        val selectionArgs = arrayOf(searchText)
        val sortOrder =
            "${MediaStore.Audio.Media.DISPLAY_NAME} ASC LIMIT $PAGE_SIZE OFFSET $offset"
        val c = mContext.contentResolver.query(
            uri,
            projection,
            selection,
            selectionArgs,
            sortOrder
        )
        if (c != null) {
            while (c.moveToNext()) {
                try {
                    val path: String = c.getString(0)
                    val songName = c.getString(1)
                    val album: String = c.getString(2)
                    val artist: String = c.getString(3)
                    val extension = File(path).extension
                    if (isMusicFile(extension)) {
                        isMusicPresentInPlaylist(path, playlistDb) {
                            val audioModel =
                                Album(
                                    name = songName,
                                    path = path,
                                    artist = artist,
                                    album = album
                                )
                            tempAudioList.add(audioModel)
                        }
                    }
                } catch (ex: Exception) {
                    
                }
            }
            c.close()
        }}
This code does not give back any result and makes the app behave like its stuck. Please help me out on the mistakes I am making and anything I am doing wrong out here so that I get this function working.
UPDATE CURSOR CODE
val c = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
            val limit = Bundle().apply {
                // Limit & Offset
                putInt(ContentResolver.QUERY_ARG_LIMIT, AUDIO_PAGE_SIZE)
                putInt(ContentResolver.QUERY_ARG_OFFSET, offset)
            }
            mContext.contentResolver.query(uri, projection, limit, null)
        } else
            mContext.contentResolver.query(
                uri,
                projection,
                null,
                null,
                "${MediaStore.Audio.Media.DISPLAY_NAME} ASC LIMIT $AUDIO_PAGE_SIZE OFFSET $offset"
            )
Note: this code is running in a background thread.
