В моем приложении android записан идентификатор события. Теперь я хочу получить указанное событие c из календаря. Возможно ли это?
Я нашел разные ответы о том, как получить события из календаря, но ни один не работал для моих требований. Здесь задокументировано, как получить события из указанного c календаря. Ограничения устанавливаются с помощью CalendarContract.Calendars
Я считаю, что мне нужно использовать CalendarContract.Events._ID
Вот что я пробовал
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
}
Он пытается загрузить все события, которые имеют _ID в списке идентификаторов и возвращает (Title, Id ) пар.
Есть ли какой-нибудь легкий способ сделать это? Существует простой способ вставки, редактирования и удаления событий здесь , поэтому я думаю, что должно быть что-то подобное и для извлечения событий.
Спасибо за помощь.