CalendarContract.Events


public static final class CalendarContract.Events
extends Object implements BaseColumns, CalendarContract.SyncColumns, CalendarContract.EventsColumns, CalendarContract.CalendarColumns

java.lang.Object
   ↳ android.provider.CalendarContract.Events


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 CalendarContract.CALLER_IS_SYNCADAPTER should be set to true and CalendarContract.SyncColumns.ACCOUNT_NAME and CalendarContract.SyncColumns.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

String _COUNT

The count of rows in a directory.

String _ID

The unique ID for a row.

String ACCOUNT_NAME

The account that was used to sync the entry to the device.

String ACCOUNT_TYPE

The type of the account that was used to sync the entry to the device.

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.

String DELETED

Whether the row has been deleted but not synced to the server.

String DIRTY

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

String MUTATORS

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

String _SYNC_ID

The unique ID for a row assigned by the sync source.

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.

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).

String AVAILABILITY

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

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.

String CAN_INVITE_OTHERS

Whether the user can invite others to the event.

String CUSTOM_APP_PACKAGE

The package name of the custom app that can provide a richer experience for the event.

String CUSTOM_APP_URI

The URI used by the custom app for the event.

String DESCRIPTION

The description of the event.

String DISPLAY_COLOR

This will be EVENT_COLOR if it is not null; otherwise, this will be Calendars#CALENDAR_COLOR.

String DTEND

The time the event ends in UTC millis since epoch.

String DTSTART

The time the event starts in UTC millis since epoch.

String DURATION

The duration of the event in RFC2445 format.

String EVENT_COLOR

A secondary color for the individual event.

String EVENT_COLOR_KEY

A secondary color key for the individual event.

String EVENT_END_TIMEZONE

The timezone for the end time of the event.

String EVENT_LOCATION

Where the event takes place.

String EVENT_TIMEZONE

The timezone for the event.

String EXDATE

The recurrence exception dates for the event.

String EXRULE

The recurrence exception rule for the event.

String GUESTS_CAN_INVITE_OTHERS

Whether guests can invite other guests.

String GUESTS_CAN_MODIFY

Whether guests can modify the event.

String GUESTS_CAN_SEE_GUESTS

Whether guests can see the list of attendees.

String HAS_ALARM

Whether the event has an alarm or not.

String HAS_ATTENDEE_DATA

Whether the event has attendee information.

String HAS_EXTENDED_PROPERTIES

Whether the event has extended properties or not.

String IS_ORGANIZER

Are we the organizer of this event.

String LAST_DATE

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

String LAST_SYNCED

Used to indicate that a row is not a real event but an original copy of a locally modified event.

String ORGANIZER

Email of the organizer (owner) of the event.

String ORIGINAL_ALL_DAY

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

String ORIGINAL_ID

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

String ORIGINAL_INSTANCE_TIME

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

String ORIGINAL_SYNC_ID

The _sync_id of the original recurring event for which this event is an exception.

String RDATE

The recurrence dates for the event.

String RRULE

The recurrence rule for the event.

String SELF_ATTENDEE_STATUS

This is a copy of the attendee status for the owner of this event.

String STATUS

The event status.

int STATUS_CANCELED

int STATUS_CONFIRMED

int STATUS_TENTATIVE

String SYNC_DATA1

This column is available for use by sync adapters.

String SYNC_DATA10

This column is available for use by sync adapters.

String SYNC_DATA2

This column is available for use by sync adapters.

String SYNC_DATA3

This column is available for use by sync adapters.

String SYNC_DATA4

This column is available for use by sync adapters.

String SYNC_DATA5

This column is available for use by sync adapters.

String SYNC_DATA6

This column is available for use by sync adapters.

String SYNC_DATA7

This column is available for use by sync adapters.

String SYNC_DATA8

This column is available for use by sync adapters.

String SYNC_DATA9

This column is available for use by sync adapters.

String TITLE

The title of the event.

String UID_2445

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

String ALLOWED_ATTENDEE_TYPES

A comma separated list of attendee types supported for this calendar in the format "#,#,#".

String ALLOWED_AVAILABILITY

A comma separated list of availability types supported for this calendar in the format "#,#,#".

String ALLOWED_REMINDERS

A comma separated list of reminder methods supported for this calendar in the format "#,#,#".

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.

String CALENDAR_COLOR_KEY

A key for looking up a color from the Colors table.

String CALENDAR_DISPLAY_NAME

The display name of the calendar.

String CALENDAR_TIME_ZONE

The time zone the calendar is associated with.

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.

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.

String IS_PRIMARY

Is this the primary calendar for this account.

String MAX_REMINDERS

The maximum number of reminders allowed for an event.

String OWNER_ACCOUNT

The owner account for this calendar, based on the calendar feed.

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.

String VISIBLE

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

String CAL_SYNC1

Generic column for use by sync adapters.

String CAL_SYNC10

Generic column for use by sync adapters.

String CAL_SYNC2

Generic column for use by sync adapters.

String CAL_SYNC3

Generic column for use by sync adapters.

String CAL_SYNC4

Generic column for use by sync adapters.

String CAL_SYNC5

Generic column for use by sync adapters.

String CAL_SYNC6

Generic column for use by sync adapters.

String CAL_SYNC7

Generic column for use by sync adapters.

String CAL_SYNC8

Generic column for use by sync adapters.

String CAL_SYNC9

Generic column for use by sync adapters.

Fields

public static final Uri CONTENT_EXCEPTION_URI

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

public static final Uri CONTENT_URI

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

public static final Uri ENTERPRISE_CONTENT_URI

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

Inherited methods

Object clone()

Creates and returns a copy of this object.

boolean equals(Object obj)

Indicates whether some other object is "equal to" this one.

void finalize()

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.

final Class<?> getClass()

Returns the runtime class of this Object.

int hashCode()

Returns a hash code value for the object.

final void notify()

Wakes up a single thread that is waiting on this object's monitor.

final void notifyAll()

Wakes up all threads that are waiting on this object's monitor.

String toString()

Returns a string representation of the object.

final void wait(long timeoutMillis, int nanos)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait(long timeoutMillis)

Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

final void wait()

Causes the current thread to wait until it is awakened, typically by being notified or interrupted.

Fields

CONTENT_EXCEPTION_URI

Added in API level 14
public static final Uri CONTENT_EXCEPTION_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
public static final Uri CONTENT_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
public static final Uri ENTERPRISE_CONTENT_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 ContentObserver for this URI to listen to changes.

Discover the latest app development tools, platform updates, training, and documentation for developers across every Android device.

Updated Apr 4, 2024

Discover the latest app development tools, platform updates, training, and documentation for developers across every Android device.

Updated Apr 4, 2024