Calendar Kit（日历服务）提供日历与日程管理能力，通常是指可以用于访问和操作日历数据的API（应用程序接口）。这些接口允许开发者将其他应用中的工作、生活中与时间相关的日程服务（如出行、餐饮、运动、娱乐等）与系统日历进行集成，从而实现日程管理、事件创建、查询等功能。

## 能力范围

Calendar Kit包括账户管理和日程管理。

* 创建日历账户。

  开发者可以创建属于本应用特有的日历账户，账户创建成功后会返回一个账户id，账户id是数据表自增主键，作为账户的唯一标识符。
* 获取日历账户。

  开发者可以获取指定的日历账户信息或者获取当前应用创建的所有日历账户信息。
* 删除日历账户。

  开发者可以删除指定的日历账户，日历账户删除后，和该日历账户所关联的全部日程都会被删除。
* 创建日程。

  开发者获取到日历账号信息后，可以在获取到的日历账户下创建日程。创建日程时可以设置日程提醒时间，到达日程提醒时间时会有日程提醒通知弹出。

  日程创建成功后会返回一个日程id，日程id是数据表自增主键，作为日程的唯一标识符。
* 删除日程。

  开发者可以指定日程id进行日程的删除，可以同时删除一条或者多条日程。
* 更新日程。

  开发者可以根据日程id对日程信息进行更新，包括更新日程标题、日程地点、日程开始时间、日程结束时间、日程提醒时间等信息。
* 查询日程。

  查询日程支持三种方式：根据日程id查询日程、根据日程标题查询日程、根据日程的开始时间和结束时间查询日程。

## 亮点/特征

**日程一键服务**：开发者通过永久性授权机制，在用户许可当前应用读写系统日历后，可将对应的日程服务以DeepLink的形式同时写入日历。根据开发者设置的提醒规则，在日程临近或到期时，日历应用、日历通知、日历卡片等区域同时会显示对应的“服务按钮”，用户可通过点击此按钮拉起跳转链接，一步直达服务落地页。

## 运作机制

Calendar Kit为用户提供了一系列接口来获取日历账户，并使用特定的接口向日历账户中写入或读取日程信息。如果写入的日程带有提醒时间则系统会在时间到达时向用户发送提醒。

## 约束限制

* 目前Calendar Kit的相关能力及接口使用，仅支持在Stage模型下使用。
* 使用Calendar Kit的相关能力，需要获取读取或写入日历、日程的权限。具体指导可见[声明权限](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/declare-permissions)。

  + 进行日历或日程的读取时，需要申请ohos.permission.READ\_CALENDAR或ohos.permission.READ\_WHOLE\_CALENDAR权限。
  + 进行日历或日程的添加、删除或修改时，需要申请ohos.permission.WRITE\_CALENDAR或ohos.permission.WRITE\_WHOLE\_CALENDAR权限。

  申请对应权限之后，支持的相关操作可见下表。

  展开

  | 申请的权限 | 支持的日历账户操作范围 | 支持的日程操作范围 |
  | --- | --- | --- |
  | ohos.permission.READ\_CALENDAR | - 读取系统默认日历账户  - 读取当前应用创建的日历账户 | - 读取系统默认日历账户下当前应用创建的日程  - 读取当前应用创建的日历账户下当前应用创建的日程 |
  | ohos.permission.WRITE\_CALENDAR | - 添加、删除或修改当前应用创建的日历账户 | - 添加、删除或修改系统默认日历账户下当前应用创建的日程  - 添加、删除或修改当前应用创建的日历账户下当前应用创建的日程 |
  | ohos.permission.READ\_WHOLE\_CALENDAR | - 读取所有日历账户 | - 读取所有应用创建的日程 |
  | ohos.permission.WRITE\_WHOLE\_CALENDAR | - 添加、删除或修改所有日历账户 | - 添加、删除或修改所有应用创建的日程 |

## 模拟器支持情况

本Kit支持模拟器。

模拟器与真机存在通用差异，详情请参见[模拟器与真机的差异](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-emulator-specification)。