Getting specific event from calendar in android by _ID

Viewed 140

I have an event id sored in my android app. Now I want to get this specific event from calendar. Is that possible?

I have found various answers on how to get events from calendar, but none was working for my requirements. Here is documented how to get events from specific calendar. Constraints are set using CalendarContract.Calendars I believe I need to use CalendarContract.Events._ID Here is what I've tried

private fun getCalendarEvents(ids: List<Long>): List<Pair<String, Long>> {
        val EVENT_PROJECTION: Array<String> = arrayOf(
            CalendarContract.Events._ID,
            CalendarContract.Events.TITLE
        )

        val PROJECTION_ID_INDEX: Int = 0
        val PROJECTION_TITLE_INDEX: Int = 1


        val uri: Uri = CONTENT_URI
        val keys: String = ids.fold("") { acc, it -> "$acc, $it" }

        val selection: String = "${CalendarContract.Calendars._ID} IN ?"
        val selectionArgs: Array<String> = arrayOf("($keys)")
        val cur: Cursor = contentResolver.query(uri, EVENT_PROJECTION, selection, selectionArgs, null)!!

        val result: MutableList<Pair<String, Long>> =
            emptyList<Pair<String, Long>>().toMutableList()

        while (cur.moveToNext()) {
            val ID: Long = cur.getLong(PROJECTION_ID_INDEX)
            val TITLE: String = cur.getString(PROJECTION_TITLE_INDEX)
            result += Pair(TITLE, ID)
        }
        return result
    }

It tries to load all events which have _ID in ids list and returns (Title, Id) pairs.

Is there any easy was how to accomplis this? There is an easy way for inserting, editing and deleting events here so I guess there must be something like that for fetching events as well.

Thank for help.

0 Answers
Related