Как добавить события в календарь на устройстве Android без использования намерения - PullRequest
1 голос
/ 28 октября 2019

Я следовал инструкции на https://developer.android.com/guide/topics/providers/calendar-provider.html

Ниже приведены мои коды.
Я могу получить идентификатор события после запуска этих кодов, но я не увидел никаких изменений в Календаре на моем устройстве (пиксель 3XL)
CALENDAR_ID получен contentResolver.query (календари, проекция, ноль, ноль, ноль)

private fun addCalendarEvent() {
            var cr = context!!.contentResolver
            var values = ContentValues()

            val beginTime = Calendar.getInstance()
            beginTime.set(2019, 11, 1, 7, 30)
            var startMillis = beginTime.timeInMillis
            val endTime = Calendar.getInstance()
            endTime.set(2019, 11, 2, 8, 30)
            var endMillis = endTime.timeInMillis

            values.put(CalendarContract.Events.CALENDAR_ID, "8".toLong())
            values.put(CalendarContract.Events.HAS_ALARM, 1)
            values.put(CalendarContract.Events.DTSTART, startMillis)
            values.put(CalendarContract.Events.DTEND, endMillis)
            values.put(CalendarContract.Events.TITLE, "test")
            values.put(CalendarContract.Events.DESCRIPTION, "test class")

            values.put(CalendarContract.Events.EVENT_TIMEZONE, Calendar.getInstance().timeZone.id)
            var uri = cr.insert(asyncAdapter(CalendarContract.Events.CONTENT_URI,
                "abc@gmail.com","com.google"), values)
            val eventID = java.lang.Long.parseLong(uri.lastPathSegment)
            Toast.makeText(activity!!.applicationContext, "id: $eventID", Toast.LENGTH_LONG).show()
}
fun asyncAdapter(uri: Uri, account: String, accountType: String): Uri {
    return uri.buildUpon()
        .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
        .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, account)
        .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType).build()
}

То, что я хотел бы сделать, можно отнести к приложению под названием "TimeTree ".
Если я зарегистрируюсь в этом приложении, оно может добавить событие и синхронизироваться с календарем ОС.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...