Added in API level 14

Events


class Events : BaseColumns, CalendarContract.CalendarColumns, CalendarContract.EventsColumns, CalendarContract.SyncColumns

Constants and helpers for the Events table, which contains details for individual events.

Operations

All operations can be done either as an app or as a sync adapter. To perform an operation as a sync adapter CALLER_IS_SYNCADAPTER should be set to true and ACCOUNT_NAME and ACCOUNT_TYPE must be set in the Uri parameters. See Uri.Builder.appendQueryParameter(java.lang.String, java.lang.String) for details on adding parameters. Sync adapters have write access to more columns but are restricted to a single account at a time.
Insert
When inserting a new event the following fields must be included:
  • dtstart
  • dtend if the event is non-recurring
  • duration if the event is recurring
  • rrule or rdate if the event is recurring
  • eventTimezone
  • a calendar_id
There are also further requirements when inserting or updating an event. See the section on Writing to Events.
Update
To perform an update of an Event the Events._ID of the event should be provided either as an appended id to the Uri ( ContentUris.withAppendedId) or as the first selection item--the selection should start with "_id=?" and the first selectionArg should be the _id of the event. Updates may also be done using a selection and no id. Updating an event must respect the same rules as inserting and is further restricted in the fields that can be written. See the section on Writing to Events.
Delete
Events can be deleted either by the Events._ID as an appended id on the Uri or using any standard selection. If an appended id is used a selection is not allowed. There are two versions of delete: as an app and as a sync adapter. An app delete will set the deleted column on an event and remove all instances of that event. A sync adapter delete will remove the event from the database and all associated data.
Query
Querying the Events table will get you all information about a set of events except their reminders, attendees, and extended properties. There will be one row returned for each event that matches the query selection, or at most a single row if the Events._ID is appended to the Uri. Recurring events will only return a single row regardless of the number of times that event repeats.

Writing to Events

There are further restrictions on all Updates and Inserts in the Events table:
  • If allDay is set to 1 eventTimezone must be "UTC" and the time must correspond to a midnight boundary.
  • Exceptions are not allowed to recur. If rrule or rdate is not empty, original_id and original_sync_id must be empty.
  • In general a calendar_id should not be modified after insertion. This is not explicitly forbidden but many sync adapters will not behave in an expected way if the calendar_id is modified.
The following Events columns are writable by both an app and a sync adapter. The following Events columns are writable only by a sync adapter The remaining columns are either updated by the provider only or are views into other tables and cannot be changed through the Events table.

Summary

Inherited constants
Int ACCESS_CONFIDENTIAL

Confidential is not used by the app.

Int ACCESS_DEFAULT

Default access is controlled by the server and will be treated as public on the device.

String ACCESS_LEVEL

Defines how the event shows up for others when the calendar is shared. Column name.

Type: INTEGER (One of ACCESS_DEFAULT, ...)

Int ACCESS_PRIVATE

Private shares the event as a free/busy slot with no details.

Int ACCESS_PUBLIC

Public makes the contents visible to anyone with access to the calendar.

String ALL_DAY

Is the event all day (time zone independent). Column name.

Type: INTEGER (boolean)

String AVAILABILITY

If this event counts as busy time or is still free time that can be scheduled over. Column name.

Type: INTEGER (One of AVAILABILITY_BUSY, AVAILABILITY_FREE, AVAILABILITY_TENTATIVE)

Int AVAILABILITY_BUSY

Indicates that this event takes up time and will conflict with other events.

Int AVAILABILITY_FREE

Indicates that this event is free time and will not conflict with other events.

Int AVAILABILITY_TENTATIVE

Indicates that the owner's availability may change, but should be considered busy time that will conflict.

String CALENDAR_ID

The Calendars._ID of the calendar the event belongs to. Column name.

Type: INTEGER

String CAN_INVITE_OTHERS

Whether the user can invite others to the event. The GUESTS_CAN_INVITE_OTHERS is a setting that applies to an arbitrary guest, while CAN_INVITE_OTHERS indicates if the user can invite others (either through GUESTS_CAN_INVITE_OTHERS or because the user has modify access to the event). Column name.

Type: INTEGER (boolean, readonly)

String CUSTOM_APP_PACKAGE

The package name of the custom app that can provide a richer experience for the event. See the ACTION TYPE CalendarContract.ACTION_HANDLE_CUSTOM_EVENT for details. Column name.

Type: TEXT

String CUSTOM_APP_URI

The URI used by the custom app for the event. Column name.

Type: TEXT

String DESCRIPTION

The description of the event. Column name.

Type: TEXT

String DISPLAY_COLOR

This will be EVENT_COLOR if it is not null; otherwise, this will be Calendars.CALENDAR_COLOR. Read-only value. To modify, write to EVENT_COLOR or Calendars.CALENDAR_COLOR directly.

Type: INTEGER

String DTEND

The time the event ends in UTC millis since epoch. Column name.

Type: INTEGER (long; millis since epoch)

String DTSTART

The time the event starts in UTC millis since epoch. Column name.

Type: INTEGER (long; millis since epoch)

String DURATION

The duration of the event in RFC2445 format. Column name.

Type: TEXT (duration in RFC2445 format)

String EVENT_COLOR

A secondary color for the individual event. This should only be updated by the sync adapter for a given account.

Type: INTEGER

String EVENT_COLOR_KEY

A secondary color key for the individual event. NULL or an empty string are reserved for indicating that the event does not use a key for looking up the color. The provider will update EVENT_COLOR automatically when a valid key is written to this column. The key must reference an existing row of the Colors table. @see Colors

Type: TEXT

String EVENT_END_TIMEZONE

The timezone for the end time of the event. Column name.

Type: TEXT

String EVENT_LOCATION

Where the event takes place. Column name.

Type: TEXT

String EVENT_TIMEZONE

The timezone for the event. Column name.

Type: TEXT

String EXDATE

The recurrence exception dates for the event. Column name.

Type: TEXT

String EXRULE

The recurrence exception rule for the event. Column name.

Type: TEXT

String GUESTS_CAN_INVITE_OTHERS

Whether guests can invite other guests. Column name.

Type: INTEGER (boolean)

String GUESTS_CAN_MODIFY

Whether guests can modify the event. Column name.

Type: INTEGER (boolean)

String GUESTS_CAN_SEE_GUESTS

Whether guests can see the list of attendees. Column name.

Type: INTEGER (boolean)

String HAS_ALARM

Whether the event has an alarm or not. Column name.

Type: INTEGER (boolean)

String HAS_ATTENDEE_DATA

Whether the event has attendee information. True if the event has full attendee data, false if the event has information about self only. Column name.

Type: INTEGER (boolean)

String HAS_EXTENDED_PROPERTIES

Whether the event has extended properties or not. Column name.

Type: INTEGER (boolean)

String IS_ORGANIZER

Are we the organizer of this event. If this column is not explicitly set, the provider will return 1 if ORGANIZER is equal to Calendars.OWNER_ACCOUNT. Column name.

Type: STRING

String LAST_DATE

The last date this event repeats on, or NULL if it never ends. Column name.

Type: INTEGER (long; millis since epoch)

String LAST_SYNCED

Used to indicate that a row is not a real event but an original copy of a locally modified event. A copy is made when an event changes from non-dirty to dirty and the event is on a calendar with Calendars.CAN_PARTIALLY_UPDATE set to 1. This copy does not get expanded in the instances table and is only visible in queries made by a sync adapter. The copy gets removed when the event is changed back to non-dirty by a sync adapter.

Type: INTEGER (boolean)

String ORGANIZER

Email of the organizer (owner) of the event. Column name.

Type: STRING

String ORIGINAL_ALL_DAY

The allDay status (true or false) of the original recurring event for which this event is an exception. Column name.

Type: INTEGER (boolean)

String ORIGINAL_ID

The Events._ID of the original recurring event for which this event is an exception. Column name.

Type: TEXT

String ORIGINAL_INSTANCE_TIME

The original instance time of the recurring event for which this event is an exception. Column name.

Type: INTEGER (long; millis since epoch)

String ORIGINAL_SYNC_ID

The _sync_id of the original recurring event for which this event is an exception. The provider should keep the original_id in sync when this is updated. Column name.

Type: TEXT

String RDATE

The recurrence dates for the event. Column name.

Type: TEXT

String RRULE

The recurrence rule for the event. Column name.

Type: TEXT

String SELF_ATTENDEE_STATUS

This is a copy of the attendee status for the owner of this event. This field is copied here so that we can efficiently filter out events that are declined without having to look in the Attendees table. Column name.

Type: INTEGER (int)

String STATUS

The event status. Column name.

Type: INTEGER (one of STATUS_TENTATIVE...)

Int STATUS_CANCELED

Int STATUS_CONFIRMED

Int STATUS_TENTATIVE

String SYNC_DATA1

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA10

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA2

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA3

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA4

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA5

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA6

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA7

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA8

This column is available for use by sync adapters. Column name.

Type: TEXT

String SYNC_DATA9

This column is available for use by sync adapters. Column name.

Type: TEXT

String TITLE

The title of the event. Column name.

Type: TEXT

String UID_2445

The UID for events added from the RFC 2445 iCalendar format. Column name.

Type: TEXT

String ACCOUNT_NAME

The account that was used to sync the entry to the device. If the account_type is not ACCOUNT_TYPE_LOCAL then the name and type must match an account on the device or the calendar will be deleted.

Type: TEXT

String ACCOUNT_TYPE

The type of the account that was used to sync the entry to the device. A type of ACCOUNT_TYPE_LOCAL will keep this event form being deleted if there are no matching accounts on the device.

Type: TEXT

String CAN_PARTIALLY_UPDATE

If set to 1 this causes events on this calendar to be duplicated with Events.LAST_SYNCED set to 1 whenever the event transitions from non-dirty to dirty. The duplicated event will not be expanded in the instances table and will only show up in sync adapter queries of the events table. It will also be deleted when the originating event has its dirty flag cleared by the sync adapter.

Type: INTEGER (boolean)

String DELETED

Whether the row has been deleted but not synced to the server. A deleted row should be ignored.

Type: INTEGER (boolean)

String DIRTY

Used to indicate that local, unsynced, changes are present.

Type: INTEGER (long)

String MUTATORS

Used in conjunction with DIRTY to indicate what packages wrote local changes.

Type: TEXT

String _SYNC_ID

The unique ID for a row assigned by the sync source. NULL if the row has never been synced. This is used as a reference id for exceptions along with BaseColumns._ID.

Type: TEXT

String ALLOWED_ATTENDEE_TYPES

A comma separated list of attendee types supported for this calendar in the format "#,#,#". Valid types are Attendees.TYPE_NONE, Attendees.TYPE_OPTIONAL, Attendees.TYPE_REQUIRED, Attendees.TYPE_RESOURCE. Setting this field to only Attendees.TYPE_NONE should be used to indicate that changing the attendee type is not supported.

String ALLOWED_AVAILABILITY

A comma separated list of availability types supported for this calendar in the format "#,#,#". Valid types are Events.AVAILABILITY_BUSY, Events.AVAILABILITY_FREE, Events.AVAILABILITY_TENTATIVE. Setting this field to only Events.AVAILABILITY_BUSY should be used to indicate that changing the availability is not supported.

String ALLOWED_REMINDERS

A comma separated list of reminder methods supported for this calendar in the format "#,#,#". Valid types are Reminders.METHOD_DEFAULT, Reminders.METHOD_ALERT, Reminders.METHOD_EMAIL, Reminders.METHOD_SMS, Reminders.METHOD_ALARM. Column name.

Type: TEXT

String CALENDAR_ACCESS_LEVEL

The level of access that the user has for the calendar

Type: INTEGER (one of the values below)

String CALENDAR_COLOR

The color of the calendar. This should only be updated by the sync adapter, not other apps, as changing a calendar's color can adversely affect its display.

Type: INTEGER (color value)

String CALENDAR_COLOR_KEY

A key for looking up a color from the Colors table. NULL or an empty string are reserved for indicating that the calendar does not use a key for looking up the color. The provider will update CALENDAR_COLOR automatically when a valid key is written to this column. The key must reference an existing row of the Colors table. @see Colors

Type: TEXT

String CALENDAR_DISPLAY_NAME

The display name of the calendar. Column name.

Type: TEXT

String CALENDAR_TIME_ZONE

The time zone the calendar is associated with.

Type: TEXT

Int CAL_ACCESS_CONTRIBUTOR

Full access to modify the calendar, but not the access control settings

Int CAL_ACCESS_EDITOR

Full access to modify the calendar, but not the access control settings

Int CAL_ACCESS_FREEBUSY

Can only see free/busy information about the calendar

Int CAL_ACCESS_NONE

Cannot access the calendar

Int CAL_ACCESS_OVERRIDE

not used

Int CAL_ACCESS_OWNER

Full access to the calendar

Int CAL_ACCESS_READ

Can read all event details

Int CAL_ACCESS_RESPOND

Can reply yes/no/maybe to an event

Int CAL_ACCESS_ROOT

Domain admin

String CAN_MODIFY_TIME_ZONE

Can the organizer modify the time zone of the event? Column name.

Type: INTEGER (boolean)

String CAN_ORGANIZER_RESPOND

Can the organizer respond to the event? If no, the status of the organizer should not be shown by the UI. Defaults to 1. Column name.

Type: INTEGER (boolean)

String IS_PRIMARY

Is this the primary calendar for this account. If this column is not explicitly set, the provider will return 1 if Calendars.ACCOUNT_NAME is equal to Calendars.OWNER_ACCOUNT.

String MAX_REMINDERS

The maximum number of reminders allowed for an event. Column name.

Type: INTEGER

String OWNER_ACCOUNT

The owner account for this calendar, based on the calendar feed. This will be different from the _SYNC_ACCOUNT for delegated calendars. Column name.

Type: String

String SYNC_EVENTS

Is this calendar synced and are its events stored on the device? 0 - Do not sync this calendar or store events for this calendar. 1 - Sync down events for this calendar.

Type: INTEGER (boolean)

String VISIBLE

Is the calendar selected to be displayed? 0 - do not show events associated with this calendar. 1 - show events associated with this calendar

Type: INTEGER (boolean)

String CAL_SYNC1

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC10

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC2

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC3

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC4

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC5

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC6

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC7

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC8

Generic column for use by sync adapters. Column name.

Type: TEXT

String CAL_SYNC9

Generic column for use by sync adapters. Column name.

Type: TEXT

String _COUNT

The count of rows in a directory.

Type: INTEGER

String _ID

The unique ID for a row.

Type: INTEGER (long)

Properties
static Uri!

The content:// style URI for recurring event exceptions.

static Uri!

The content:// style URL for interacting with events.

static Uri

The content:// style URL for querying Events table in the managed profile.

Properties

CONTENT_EXCEPTION_URI

Added in API level 14
static val CONTENT_EXCEPTION_URI: Uri!

The content:// style URI for recurring event exceptions. Insertions require an appended event ID. Deletion of exceptions requires both the original event ID and the exception event ID (see Uri.Builder.appendPath).

CONTENT_URI

Added in API level 14
static val CONTENT_URI: Uri!

The content:// style URL for interacting with events. Appending an event id using ContentUris.withAppendedId(Uri, long) will specify a single event.

ENTERPRISE_CONTENT_URI

Added in API level 29
static val ENTERPRISE_CONTENT_URI: Uri

The content:// style URL for querying Events table in the managed profile. Appending an event id using ContentUris.withAppendedId(Uri, long) specifies a single event.

The following columns are allowed to be queried via this uri:

IllegalArgumentException is thrown if there exists columns in the projection of the query to this uri that are not contained in the above list.

This uri returns an empty cursor if the calling user is not a parent profile of a managed profile, or the managed profile is disabled, or cross-profile calendar is disabled in Settings, or this uri is queried from a package that is not allowed by the profile owner of the managed profile via DevicePolicyManager.setCrossProfileCalendarPackages(ComponentName, Set).

Apps can register a android.database.ContentObserver for this URI to listen to changes.