Search code examples
androidgoogle-calendar-apireminders

Android Event with Reminder shows two entries in calendar application


Hi I am developing calendar feature in my application. I have done this in following way:

    fun generateEvent(context: Context, calendarId: String?,
                      eventTitle: String, eventDescription: String,
                      startTime: Long, endTime: Long)
    {
        if(!calendarId.isNullOrEmpty()){
            val cv = ContentValues()
            cv.put(CalendarContract.Events.CALENDAR_ID, calendarId)
            cv.put(CalendarContract.Events.TITLE, eventTitle)
            cv.put(CalendarContract.Events.DESCRIPTION, eventDescription)
            cv.put(
                CalendarContract.Events.DTSTART,
                startTime
            )
        cv.put(
            CalendarContract.Events.DTEND,
            endTime
        )
            cv.put(CalendarContract.Events.EVENT_TIMEZONE, TimeZone.getDefault().id)
            cv.put(CalendarContract.Events.HAS_ALARM, true)
            val contentResolver: ContentResolver = context.getContentResolver()
            contentResolver.insert(CalendarContract.Events.CONTENT_URI, cv)

            var eventUri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, cv)
            var eventID = eventUri?.getLastPathSegment()?.toLong()
            if(eventID != null){
                val reminderCV = ContentValues()
                reminderCV.put(CalendarContract.Reminders.EVENT_ID, eventID)
                reminderCV.put(CalendarContract.Reminders.MINUTES, 1)
                reminderCV.put(CalendarContract.Reminders.METHOD, CalendarContract.Reminders.METHOD_ALERT)
                contentResolver.insert(CalendarContract.Reminders.CONTENT_URI, reminderCV)
            }
        }
    }

It generate the event and reminder on google calendar. Only issue is that it shows two entries on calendar. One is with reminder and other one without reminder.

enter image description here


Solution

  • You have two insert statements. Just remove the

    contentResolver.insert(CalendarContract.Events.CONTENT_URI, cv)
    

    and your code works fine