1# @ohos.calendarManager (日程管理能力) 2 3<!--Kit: Calendar Kit--> 4<!--Subsystem: Applications--> 5<!--Owner: @qq_42718467--> 6<!--Designer: @huangxinwei--> 7<!--Tester: @z30055209--> 8<!--Adviser: @ge-yafang--> 9 10本模块提供日历与日程管理能力,包括日历和日程的创建、删除、修改、查询等。 11 12- 日历管理器[CalendarManager](#calendarmanager)用于管理日历[Calendar](#calendar)。 13 14- 日历[Calendar](#calendar)主要包含账户信息[CalendarAccount](#calendaraccount)和配置信息[CalendarConfig](#calendarconfig)。日历Calendar与日程Event属于从属关系,需要先创建日历Calendar对象,然后再通过日历Calendar创建日程Event对象,一个Calendar可以有多个Event,一个Event只属于一个Calendar。日历管理器是对日历的管理,日程过滤器是对日程的管理。 15 16> **说明:** 17> 18> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 19> 20> - 进行日历或日程的读取时,需要申请ohos.permission.READ_CALENDAR或ohos.permission.READ_WHOLE_CALENDAR权限。 21> 22> - 进行日历或日程的添加、删除或修改时,需要申请ohos.permission.WRITE_CALENDAR或ohos.permission.WRITE_WHOLE_CALENDAR权限。 23 24申请对应权限之后,支持的相关操作可见下表。 25 26| 申请的权限 | 支持的日历账户操作范围 | 支持的日程操作范围 | 27| ------------------------------ | -------------------------------------------- | ------------------------------------------------------------ | 28| ohos.permission.READ_CALENDAR | - 读取系统默认日历账户<br>- 读取当前应用创建的日历账户 | - 读取系统默认日历账户下当前应用创建的日程<br/>- 读取当前应用创建的日历账户下当前应用创建的日程 | 29| ohos.permission.WRITE_CALENDAR | - 添加、删除或修改当前应用创建的日历账户 | - 添加、删除或修改系统默认日历账户下当前应用创建的日程<br>- 添加、删除或修改当前应用创建的日历账户下当前应用创建的日程 | 30| ohos.permission.READ_WHOLE_CALENDAR | - 读取所有日历账户 | - 读取所有应用创建的日程 | 31| ohos.permission.WRITE_WHOLE_CALENDAR | - 添加、删除或修改所有日历账户 | - 添加、删除或修改所有应用创建的日程 | 32 33 34## 导入模块 35 36```typescript 37import { calendarManager } from '@kit.CalendarKit'; 38``` 39 40## calendarManager.getCalendarManager 41 42getCalendarManager(context: Context): CalendarManager 43 44根据上下文获取CalendarManager对象,用于管理日历。 45 46**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 47 48**系统能力**: SystemCapability.Applications.CalendarData 49 50**模型约束**:此接口仅可在Stage模型下使用。 51 52**参数**: 53 54| 参数名 | 类型 | 必填 | 说明 | 55| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------| 56| context | Context | 是 | 应用上下文Context,Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 57 58**返回值**: 59 60| 类型 | 说明 | 61| ------------------------------ | ------------------------------------- | 62| CalendarManager | 返回创建的CalendarManager对象。 | 63 64**示例**: 65 66```typescript 67// 获取上下文mContext 68// 获取日历管理器calendarMgr 69// 该文件为系统生成,目录:entry/src/main/ets/entryability/EntryAbility.ets 70import { 71 abilityAccessCtrl, 72 AbilityConstant, common, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit'; 73import { BusinessError } from '@kit.BasicServicesKit'; 74import { calendarManager } from '@kit.CalendarKit'; 75import { window } from '@kit.ArkUI'; 76 77export let calendarMgr: calendarManager.CalendarManager | null = null; 78export let mContext: common.UIAbilityContext | null = null; 79export default class EntryAbility extends UIAbility { 80 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 81 console.info("Ability onCreate"); 82 } 83 84 onDestroy(): void { 85 console.info("Ability onDestroy"); 86 } 87 88 onWindowStageCreate(windowStage: window.WindowStage): void { 89 // Main window is created, set main page for this ability 90 console.info("Ability onWindowStageCreate"); 91 92 windowStage.loadContent('pages/Index', (err, data) => { 93 if (err.code) { 94 console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`); 95 return; 96 } 97 console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`); 98 }); 99 mContext = this.context; 100 const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR']; 101 let atManager = abilityAccessCtrl.createAtManager(); 102 atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => { 103 console.info(`get Permission success, result: ${JSON.stringify(result)}`); 104 calendarMgr = calendarManager.getCalendarManager(mContext); 105 }).catch((error: BusinessError) => { 106 console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`); 107 }) 108 } 109 110 onWindowStageDestroy(): void { 111 // Main window is destroyed, release UI related resources 112 console.info("Ability onWindowStageDestroy"); 113 } 114 115 onForeground(): void { 116 // Ability has brought to foreground 117 console.info("Ability onForeground"); 118 } 119 120 onBackground(): void { 121 // Ability has back to background 122 console.info("Ability onBackground"); 123 } 124} 125``` 126 127## CalendarManager 128 129下列API示例中需先通过[getCalendarManager()](#calendarmanagergetcalendarmanager)方法获取CalendarManager对象,再通过此对象调用对应方法,进行Calendar的创建、删除、修改、查询等操作。 130 131**系统能力**: SystemCapability.Applications.CalendarData 132 133 134### createCalendar 135 136createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void 137 138根据日历账户信息,创建一个Calendar对象,使用callback异步回调。 139 140**需要权限**: ohos.permission.WRITE_CALENDAR或ohos.permission.WRITE_WHOLE_CALENDAR 141 142**系统能力**: SystemCapability.Applications.CalendarData 143 144**参数**: 145 146| 参数名 | 类型 | 必填 | 说明 | 147| --------------- | ------------------------------------- | ---- | ---------------------------------- | 148| calendarAccount | [CalendarAccount](#calendaraccount) | 是 | 日历账户信息。 | 149| callback | AsyncCallback\<[Calendar](#calendar)> | 是 | 回调函数,返回创建的Calendar对象。 | 150 151**错误码:** 152 153以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 154 155| 错误码ID | 错误信息 | 156| -------- | ------------------------------ | 157| 201 | Permission denied. | 158| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 159| 801 | Capability not supported. | 160 161**示例**: 162 163```typescript 164import { BusinessError } from '@kit.BasicServicesKit'; 165import { calendarMgr } from '../entryability/EntryAbility'; 166 167let calendar: calendarManager.Calendar | undefined = undefined; 168const calendarAccount: calendarManager.CalendarAccount = { 169 name: 'CreateMyCalendarByCallBack', 170 type: calendarManager.CalendarType.LOCAL 171}; 172try { 173 calendarMgr?.createCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => { 174 if (err) { 175 console.error(`Failed to create calendar. Code: ${err.code}, message: ${err.message}`); 176 } else { 177 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 178 calendar = data; 179 } 180 }); 181} catch (error) { 182 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 183} 184``` 185 186### createCalendar 187 188createCalendar(calendarAccount: CalendarAccount): Promise\<Calendar> 189 190根据日历账户信息,创建一个Calendar对象,使用Promise异步回调。 191 192**需要权限**: ohos.permission.WRITE_CALENDAR或ohos.permission.WRITE_WHOLE_CALENDAR 193 194**系统能力**: SystemCapability.Applications.CalendarData 195 196**参数**: 197 198| 参数名 | 类型 | 必填 | 说明 | 199| --------------- | ----------------------------------- | ---- | -------------- | 200| calendarAccount | [CalendarAccount](#calendaraccount) | 是 | 日历账户信息。 | 201 202**返回值**: 203 204| 类型 | 说明 | 205| ------------------------------ | ------------------------------------- | 206| Promise<[Calendar](#calendar)> | Promise对象,返回创建的Calendar对象。 | 207 208**错误码:** 209 210以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 211 212| 错误码ID | 错误信息 | 213| -------- | ------------------------------ | 214| 201 | Permission denied. | 215| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 216| 801 | Capability not supported. | 217 218**示例**: 219 220```typescript 221import { BusinessError } from '@kit.BasicServicesKit'; 222import { calendarMgr } from '../entryability/EntryAbility'; 223 224let calendar : calendarManager.Calendar | undefined = undefined; 225const calendarAccount: calendarManager.CalendarAccount = { 226 name: 'CreateMyCalendarByPromise', 227 type: calendarManager.CalendarType.LOCAL, 228 displayName : 'MyApplication' 229}; 230calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 231 console.info(`Succeeded in creating calendar data->${JSON.stringify(data)}`); 232 calendar = data; 233}).catch((error : BusinessError) => { 234 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 235}); 236``` 237 238### deleteCalendar 239 240deleteCalendar(calendar: Calendar, callback: AsyncCallback\<void>): void 241 242删除指定Calendar对象,使用callback异步回调。 243 244**需要权限**: ohos.permission.WRITE_CALENDAR或ohos.permission.WRITE_WHOLE_CALENDAR 245 246**系统能力**: SystemCapability.Applications.CalendarData 247 248**参数**: 249 250| 参数名 | 类型 | 必填 | 说明 | 251| -------- | --------------------- | ---- | -------------- | 252| calendar | [Calendar](#calendar) | 是 | 即将删除的Calendar对象。 | 253| callback | AsyncCallback\<void> | 是 | 无返回结果的AsyncCallback对象。 | 254 255**错误码:** 256 257以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 258 259| 错误码ID | 错误信息 | 260| -------- | ------------------------------ | 261| 201 | Permission denied. | 262| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 263| 801 | Capability not supported. | 264 265**示例**: 266 267```typescript 268import { BusinessError } from '@kit.BasicServicesKit'; 269import { calendarMgr } from '../entryability/EntryAbility'; 270 271const calendarAccount: calendarManager.CalendarAccount = { 272 name: 'DeleteMyCalendarByCallBack', 273 type: calendarManager.CalendarType.LOCAL 274}; 275calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 276 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 277 calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => { 278 if (err) { 279 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 280 } else { 281 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 282 calendarMgr?.deleteCalendar(data, (err1: BusinessError) => { 283 if (err1) { 284 console.error(`Failed to delete calendar. Code: ${err1.code}, message: ${err1.message}`); 285 } else { 286 console.info("Succeeded in deleting calendar"); 287 } 288 }); 289 } 290 }); 291}).catch((error: BusinessError) => { 292 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 293}) 294``` 295 296### deleteCalendar 297 298deleteCalendar(calendar: Calendar): Promise\<void> 299 300删除指定Calendar对象,使用Promise异步回调。 301 302**需要权限**: ohos.permission.WRITE_CALENDAR或ohos.permission.WRITE_WHOLE_CALENDAR 303 304**系统能力**: SystemCapability.Applications.CalendarData 305 306**参数**: 307 308| 参数名 | 类型 | 必填 | 说明 | 309| -------- | --------------------- | ---- | -------------- | 310| calendar | [Calendar](#calendar) | 是 | 即将删除的Calendar对象。 | 311 312**返回值**: 313 314| 类型 | 说明 | 315| -------------- | ------------------------- | 316| Promise\<void> | 无返回结果的Promise对象。 | 317 318**错误码:** 319 320以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 321 322| 错误码ID | 错误信息 | 323| -------- | ------------------------------ | 324| 201 | Permission denied. | 325| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 326| 801 | Capability not supported. | 327 328**示例**: 329 330```typescript 331import { BusinessError } from '@kit.BasicServicesKit'; 332import { calendarMgr } from '../entryability/EntryAbility'; 333 334const calendarAccount: calendarManager.CalendarAccount = { 335 name: 'DeleteMyCalendarByPromise', 336 type: calendarManager.CalendarType.LOCAL 337}; 338calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 339 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 340 calendarMgr?.getCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 341 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 342 calendarMgr?.deleteCalendar(data).then(() => { 343 console.info("Succeeded in deleting calendar"); 344 }).catch((err: BusinessError) => { 345 console.error(`Failed to delete calendar. Code: ${err.code}, message: ${err.message}`); 346 }); 347 }).catch((err: BusinessError) => { 348 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 349 }); 350}).catch((error: BusinessError) => { 351 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 352}) 353``` 354 355### getCalendar 356 357getCalendar(callback: AsyncCallback\<Calendar>): void 358 359获取默认Calendar对象,默认Calendar是日历存储首次运行时创建的,若创建Event时不关注其Calendar归属,则无须通过[createCalendar()](#createcalendar)创建Calendar,直接使用默认Calendar,使用callback异步回调。 360 361**需要权限**:ohos.permission.READ_CALENDAR或ohos.permission.READ_WHOLE_CALENDAR 362 363**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 364 365**系统能力**: SystemCapability.Applications.CalendarData 366 367**参数**: 368 369| 参数名 | 类型 | 必填 | 说明 | 370| -------- | ------------------------------------ | ---- | ------------------------------------ | 371| callback | AsyncCallback<[Calendar](#calendar)> | 是 | 回调函数,返回查询到的Calendar对象。 | 372 373**错误码:** 374 375以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 376 377| 错误码ID | 错误信息 | 378| -------- | ------------------------------ | 379| 201 | Permission denied. | 380| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 381| 801 | Capability not supported. | 382 383**示例**: 384 385```typescript 386import { BusinessError } from '@kit.BasicServicesKit'; 387import { calendarMgr } from '../entryability/EntryAbility'; 388 389let calendar : calendarManager.Calendar | undefined = undefined; 390calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 391 if (err) { 392 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 393 } else { 394 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 395 calendar = data; 396 } 397}); 398``` 399 400### getCalendar 401 402getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void 403 404获取指定Calendar对象,使用callback异步回调。 405 406**需要权限**: ohos.permission.READ_CALENDAR或ohos.permission.READ_WHOLE_CALENDAR 407 408**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 409 410**系统能力**: SystemCapability.Applications.CalendarData 411 412**参数**: 413 414| 参数名 | 类型 | 必填 | 说明 | 415| --------------- | ------------------------------------ | ---- | ------------------------------------ | 416| calendarAccount | [CalendarAccount](#calendaraccount) | 是 | 日历账户信息。 | 417| callback | AsyncCallback<[Calendar](#calendar)> | 是 | 回调函数,返回查询到的Calendar对象。 | 418 419**错误码:** 420 421以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 422 423| 错误码ID | 错误信息 | 424| -------- | ------------------------------ | 425| 201 | Permission denied. | 426| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 427| 801 | Capability not supported. | 428 429**示例**: 430 431```typescript 432import { BusinessError } from '@kit.BasicServicesKit'; 433import { calendarMgr } from '../entryability/EntryAbility'; 434 435let calendar : calendarManager.Calendar | undefined = undefined; 436const calendarAccount: calendarManager.CalendarAccount = { 437 name: 'MyCalendar', 438 type: calendarManager.CalendarType.LOCAL 439}; 440calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 441 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 442 calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => { 443 if (err) { 444 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 445 } else { 446 console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`); 447 calendar = data; 448 } 449 }); 450}).catch((error: BusinessError) => { 451 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 452}) 453``` 454 455### getCalendar 456 457getCalendar(calendarAccount?: CalendarAccount): Promise\<Calendar> 458 459获取默认Calendar对象或者指定Calendar对象,使用Promise异步回调。 460 461**需要权限**: ohos.permission.READ_CALENDAR或ohos.permission.READ_WHOLE_CALENDAR 462 463**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 464 465**系统能力**: SystemCapability.Applications.CalendarData 466 467**参数**: 468 469| 参数名 | 类型 | 必填 | 说明 | 470| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ | 471| calendarAccount | [CalendarAccount](#calendaraccount) | 否 | 日历账户信息,用来获取指定Calendar对象,不填时,表示获取默认Calendar对象。 | 472 473**返回值**: 474 475| 类型 | 说明 | 476| ------------------------------ | --------------------------------------- | 477| Promise<[Calendar](#calendar)> | Promise对象,返回查询到的Calendar对象。 | 478 479**错误码:** 480 481以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 482 483| 错误码ID | 错误信息 | 484| -------- | ------------------------------ | 485| 201 | Permission denied. | 486| 401 | Parameter error. Possible causes: Incorrect parameter types. | 487| 801 | Capability not supported. | 488 489**示例**: 490 491```typescript 492import { BusinessError } from '@kit.BasicServicesKit'; 493import { calendarMgr } from '../entryability/EntryAbility'; 494 495let calendar : calendarManager.Calendar | undefined = undefined; 496calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => { 497 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 498 calendar = data; 499}).catch((err: BusinessError) => { 500 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 501}); 502``` 503 504### getAllCalendars 505 506getAllCalendars(callback: AsyncCallback\<Calendar[]>): void 507 508获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用callback异步回调。 509 510**需要权限**:ohos.permission.READ_CALENDAR或ohos.permission.READ_WHOLE_CALENDAR 511 512**系统能力**: SystemCapability.Applications.CalendarData 513 514**参数**: 515 516| 参数名 | 类型 | 必填 | 说明 | 517| -------- | -------------------------------------- | ---- | ----------------------------------------- | 518| callback | AsyncCallback<[Calendar](#calendar)[]> | 是 | 回调函数, 返回查询到的Calendar对象数组。 | 519 520**错误码:** 521 522以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 523 524| 错误码ID | 错误信息 | 525| -------- | ------------------------------ | 526| 201 | Permission denied. | 527| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 528| 801 | Capability not supported. | 529 530**示例**: 531 532```typescript 533import { BusinessError } from '@kit.BasicServicesKit'; 534import { calendarMgr } from '../entryability/EntryAbility'; 535 536calendarMgr?.getAllCalendars((err: BusinessError, data: calendarManager.Calendar[]) => { 537 if (err) { 538 console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`); 539 } else { 540 console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`); 541 data.forEach((calendar) => { 542 const account = calendar.getAccount(); 543 console.info(`account -> ${JSON.stringify(account)}`); 544 }) 545 } 546}); 547``` 548 549### getAllCalendars 550 551getAllCalendars(): Promise\<Calendar[]> 552 553获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用Promise异步回调。 554 555**需要权限**: ohos.permission.READ_CALENDAR或ohos.permission.READ_WHOLE_CALENDAR 556 557**系统能力**: SystemCapability.Applications.CalendarData 558 559**返回值**: 560 561| 类型 | 说明 | 562| -------------------------------- | ------------------------------------------- | 563| Promise<[Calendar](#calendar)[]> | Promise对象,返回查询到的Calendar对象数组。 | 564 565**错误码:** 566 567以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 568 569| 错误码ID | 错误信息 | 570| -------- | ------------------------------ | 571| 201 | Permission denied. | 572| 401 | Parameter error. Possible causes: Incorrect parameter types. | 573| 801 | Capability not supported. | 574 575**示例**: 576 577```typescript 578import { BusinessError } from '@kit.BasicServicesKit'; 579import { calendarMgr } from '../entryability/EntryAbility'; 580 581calendarMgr?.getAllCalendars().then((data: calendarManager.Calendar[]) => { 582 console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`); 583 data.forEach((calendar) => { 584 const account = calendar.getAccount(); 585 console.info(`account -> ${JSON.stringify(account)}`); 586 }) 587}).catch((err: BusinessError) => { 588 console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`); 589}); 590``` 591 592### editEvent<sup>12+</sup> 593 594editEvent(event: Event): Promise\<number> 595 596通过跳转到日程创建页面创建单个日程,入参Event不填日程id,使用Promise异步回调。使用该接口创建的日程,三方应用无法查询和修改,只能通过系统日历进行查询和修改。 597 598**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 599 600**系统能力**: SystemCapability.Applications.CalendarData 601 602**参数**: 603 604| 参数名 | 类型 | 必填 | 说明 | 605| ------ | --------------- | ---- | ----------- | 606| event | [Event](#event) | 是 | Event对象。 | 607 608**返回值**: 609 610| 类型 | 说明 | 611| -------------- |-----------------------------------------------------------------------------| 612| Promise<number> | Promise对象,返回日程的id,日程id是日程的唯一标识符,是数据库的自增主键。创建失败时没有返回值;当返回值小于0时代表用户取消创建;当返回值大于0时代表日程创建成功;没有等于0的情况。 | 613 614**示例**: 615 616```typescript 617import { BusinessError } from '@kit.BasicServicesKit'; 618import { calendarMgr } from '../entryability/EntryAbility'; 619 620const date = new Date(); 621const event: calendarManager.Event = { 622 title: 'title', 623 type: calendarManager.EventType.NORMAL, 624 startTime: date.getTime(), 625 endTime: date.getTime() + 60 * 60 * 1000 626}; 627calendarMgr?.editEvent(event).then((eventId: number): void => { 628 console.info(`create Event id = ${eventId}`); 629}).catch((err: BusinessError) => { 630 console.error(`Failed to create Event. Code: ${err.code}, message: ${err.message}`); 631}); 632``` 633 634## Calendar 635 636下列API示例中需先通过[createCalendar()](#createcalendar)、[getCalendar()](#getcalendar)中任一方法获取Calendar对象,再通过此对象调用对应方法,对该Calendar下的日程进行创建、删除、修改、查询等操作。 637 638**系统能力**: SystemCapability.Applications.CalendarData 639 640### 属性 641 642**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 643 644**系统能力**:SystemCapability.Applications.CalendarData 645 646| 名称 | 类型 | 只读 | 可选 | 说明 | 647| ---- | ------ | ---- |----|--------------------------------------------------------------------------| 648| id | number | 是 | 否 | 日历账户id,日历账户id是日历账户的唯一标识符,是数据库的自增主键,小于0代表日历账户创建失败,大于0代表日历账户创建成功,没有等于0的情况。 | 649 650### addEvent 651 652addEvent(event: Event, callback: AsyncCallback\<number>): void 653 654创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用callback异步回调。 655 656**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 657 658**系统能力**: SystemCapability.Applications.CalendarData 659 660**参数**: 661 662| 参数名 | 类型 | 必填 | 说明 | 663| -------- | ---------------------- | ---- |-----------------------------------------------------------------------| 664| event | [Event](#event) | 是 | Event对象。 | 665| callback | AsyncCallback\<number> | 是 | 回调函数,返回日程id,日程id是日程的唯一标识符,是数据库的自增主键,小于0代表日程创建失败,大于0代表日程创建成功,没有等于0的情况。 | 666 667**示例**: 668 669```typescript 670import { BusinessError } from '@kit.BasicServicesKit'; 671import { calendarMgr } from '../entryability/EntryAbility'; 672 673let calendar : calendarManager.Calendar | undefined = undefined; 674const date = new Date(); 675const event: calendarManager.Event = { 676 type: calendarManager.EventType.NORMAL, 677 startTime: date.getTime(), 678 endTime: date.getTime() + 60 * 60 * 1000 679}; 680calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => { 681 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 682 calendar = data; 683 calendar.addEvent(event, (err: BusinessError, data: number): void => { 684 if (err) { 685 console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`); 686 } else { 687 console.info(`Succeeded in adding event, id -> ${data}`); 688 } 689 }); 690}).catch((err: BusinessError) => { 691 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 692}); 693``` 694 695### addEvent 696 697addEvent(event: Event): Promise\<number> 698 699创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用Promise异步回调。 700 701**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 702 703**系统能力**: SystemCapability.Applications.CalendarData 704 705**参数**: 706 707| 参数名 | 类型 | 必填 | 说明 | 708| ------ | --------------- | ---- | ----------- | 709| event | [Event](#event) | 是 | Event对象。 | 710 711**返回值**: 712 713| 类型 | 说明 | 714| ---------------- |--------------------------| 715| Promise\<number> | Promise对象,返回日程的id,id大于0。 | 716 717**示例**: 718 719```typescript 720import { BusinessError } from '@kit.BasicServicesKit'; 721import { calendarMgr } from '../entryability/EntryAbility'; 722 723let calendar : calendarManager.Calendar | undefined = undefined; 724const date = new Date(); 725const event: calendarManager.Event = { 726 type: calendarManager.EventType.NORMAL, 727 startTime: date.getTime(), 728 endTime: date.getTime() + 60 * 60 * 1000 729}; 730calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 731 if (err) { 732 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 733 } else { 734 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 735 calendar = data; 736 calendar.addEvent(event).then((data: number) => { 737 console.info(`Succeeded in adding event, id -> ${data}`); 738 }).catch((err: BusinessError) => { 739 console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`); 740 }); 741 } 742}); 743``` 744 745### addEvents 746 747addEvents(events: Event[], callback: AsyncCallback\<void>): void 748 749批量创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用callback异步回调。 750 751**系统能力**: SystemCapability.Applications.CalendarData 752 753**参数**: 754 755| 参数名 | 类型 | 必填 | 说明 | 756| -------- | -------------------- | ---- | --------------- | 757| events | [Event](#event)[] | 是 | Event对象数组。 | 758| callback | AsyncCallback\<void> | 是 | 回调函数。 | 759 760**示例**: 761 762```typescript 763import { BusinessError } from '@kit.BasicServicesKit'; 764import { calendarMgr } from '../entryability/EntryAbility'; 765 766let calendar : calendarManager.Calendar | undefined = undefined; 767const date = new Date(); 768const events: calendarManager.Event[] = [ 769 { 770 type: calendarManager.EventType.NORMAL, 771 startTime: date.getTime(), 772 endTime: date.getTime() + 60 * 60 * 1000 773 }, 774 { 775 type: calendarManager.EventType.NORMAL, 776 startTime: date.getTime(), 777 endTime: date.getTime() + 60 * 60 * 1000 778 } 779]; 780calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 781 if (err) { 782 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 783 } else { 784 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 785 calendar = data; 786 calendar.addEvents(events, (err: BusinessError) => { 787 if (err) { 788 console.error(`Failed to add events. Code: ${err.code}, message: ${err.message}`); 789 } else { 790 console.info("Succeeded in adding events"); 791 } 792 }); 793 } 794}); 795``` 796 797### addEvents 798 799addEvents(events: Event[]): Promise\<void> 800 801批量创建日程,入参Event不填日程id、instanceStartTime和instanceEndTime,使用Promise异步回调。 802 803**系统能力**: SystemCapability.Applications.CalendarData 804 805**参数**: 806 807| 参数名 | 类型 | 必填 | 说明 | 808| ------ | ----------------- | ---- | --------------- | 809| events | [Event](#event)[] | 是 | Event对象数组。 | 810 811**返回值**: 812 813| 类型 | 说明 | 814| -------------- | ------------------------- | 815| Promise\<void> | 无返回结果的Promise对象。 | 816 817**示例**: 818 819```typescript 820import { BusinessError } from '@kit.BasicServicesKit'; 821import { calendarMgr } from '../entryability/EntryAbility'; 822 823let calendar : calendarManager.Calendar | undefined = undefined; 824const date = new Date(); 825const events: calendarManager.Event[] = [ 826 { 827 type: calendarManager.EventType.NORMAL, 828 startTime: date.getTime(), 829 endTime: date.getTime() + 60 * 60 * 1000 830 }, 831 { 832 type: calendarManager.EventType.NORMAL, 833 startTime: date.getTime(), 834 endTime: date.getTime() + 60 * 60 * 1000 835 } 836]; 837calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 838 if (err) { 839 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 840 } else { 841 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 842 calendar = data; 843 calendar.addEvents(events).then(() => { 844 console.info("Succeeded in adding events"); 845 }).catch((err: BusinessError) => { 846 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 847 }); 848 } 849}); 850``` 851 852### deleteEvent 853 854deleteEvent(id: number, callback: AsyncCallback\<void>): void 855 856删除指定id的日程,使用callback异步回调。 857 858**系统能力**: SystemCapability.Applications.CalendarData 859 860**参数**: 861 862| 参数名 | 类型 | 必填 | 说明 | 863| -------- | -------------------- | ---- |----------------------------------------| 864| id | number | 是 | 日程id,传入的日程id为正整数,表示已创建日程的id,是日程的唯一标识符。 | 865| callback | AsyncCallback\<void> | 是 | 回调函数。 | 866 867**示例**: 868 869```typescript 870import { BusinessError } from '@kit.BasicServicesKit'; 871import { calendarMgr } from '../entryability/EntryAbility'; 872 873let calendar : calendarManager.Calendar | undefined = undefined; 874let id: number = 0; 875const date = new Date(); 876const event: calendarManager.Event = { 877 type: calendarManager.EventType.NORMAL, 878 startTime: date.getTime(), 879 endTime: date.getTime() + 60 * 60 * 1000 880}; 881calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 882 if (err) { 883 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 884 } else { 885 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 886 calendar = data; 887 calendar.addEvent(event).then((data: number) => { 888 console.info(`Succeeded in adding event, id -> ${data}`); 889 id = data; 890 calendar?.deleteEvent(id, (err: BusinessError) => { 891 if (err) { 892 console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`); 893 } else { 894 console.info(`Succeeded in deleting event`); 895 } 896 }); 897 }).catch((err: BusinessError) => { 898 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 899 }); 900 } 901}); 902``` 903 904### deleteEvent 905 906deleteEvent(id: number): Promise\<void> 907 908删除指定id的日程,使用Promise异步回调。 909 910**系统能力**: SystemCapability.Applications.CalendarData 911 912**参数**: 913 914| 参数名 | 类型 | 必填 | 说明 | 915| ------ | ------ | ---- | -------- | 916| id | number | 是 | 日程id。 | 917 918**返回值**: 919 920| 类型 | 说明 | 921| -------------- | ------------------------- | 922| Promise\<void> | 无返回结果的Promise对象。 | 923 924**示例**: 925 926```typescript 927import { BusinessError } from '@kit.BasicServicesKit'; 928import { calendarMgr } from '../entryability/EntryAbility'; 929 930let calendar : calendarManager.Calendar | undefined = undefined; 931let id: number = 0; 932const date = new Date(); 933const event: calendarManager.Event = { 934 type: calendarManager.EventType.NORMAL, 935 startTime: date.getTime(), 936 endTime: date.getTime() + 60 * 60 * 1000 937}; 938calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 939 if (err) { 940 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 941 } else { 942 console.info(`Succeeded in getting calendar data->${JSON.stringify(data)}`); 943 calendar = data; 944 await calendar.addEvent(event).then((data: number) => { 945 console.info(`Succeeded in adding event, id -> ${data}`); 946 id = data; 947 }).catch((err: BusinessError) => { 948 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 949 }); 950 calendar.deleteEvent(id).then(() => { 951 console.info("Succeeded in deleting event"); 952 }).catch((err: BusinessError) => { 953 console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`); 954 }); 955 } 956}); 957``` 958 959### deleteEvents 960 961deleteEvents(ids: number[], callback: AsyncCallback\<void>): void 962 963根据日程id,批量删除日程,使用callback异步回调。 964 965**系统能力**: SystemCapability.Applications.CalendarData 966 967**参数**: 968 969| 参数名 | 类型 | 必填 | 说明 | 970| -------- | -------------------- | ---- | ------------ | 971| ids | number[] | 是 | 日程id数组。 | 972| callback | AsyncCallback\<void> | 是 | 回调函数。 | 973 974**示例**: 975 976```typescript 977import { BusinessError } from '@kit.BasicServicesKit'; 978import { calendarMgr } from '../entryability/EntryAbility'; 979 980let calendar : calendarManager.Calendar | undefined = undefined; 981let id1: number = 0; 982let id2: number = 0; 983const date = new Date(); 984const event1: calendarManager.Event = { 985 type: calendarManager.EventType.NORMAL, 986 startTime: date.getTime(), 987 endTime: date.getTime() + 60 * 60 * 1000 988}; 989const event2: calendarManager.Event = { 990 type: calendarManager.EventType.IMPORTANT, 991 startTime: date.getTime(), 992 endTime: date.getTime() + 60 * 60 * 1000 993}; 994calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 995 if (err) { 996 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 997 } else { 998 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 999 calendar = data; 1000 await calendar.addEvent(event1).then((data: number) => { 1001 console.info(`Succeeded in adding event, id -> ${data}`); 1002 id1 = data; 1003 }).catch((err: BusinessError) => { 1004 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1005 }); 1006 await calendar.addEvent(event2).then((data: number) => { 1007 console.info(`Succeeded in adding event, id -> ${data}`); 1008 id2 = data; 1009 }).catch((err: BusinessError) => { 1010 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1011 }); 1012 calendar.deleteEvents([id1, id2], (err: BusinessError) => { 1013 if (err) { 1014 console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`); 1015 } else { 1016 console.info("Succeeded in deleting events"); 1017 } 1018 }); 1019 } 1020}); 1021``` 1022 1023### deleteEvents 1024 1025deleteEvents(ids: number[]): Promise\<void> 1026 1027根据日程id,批量删除日程,使用Promise异步回调。 1028 1029**系统能力**: SystemCapability.Applications.CalendarData 1030 1031**参数**: 1032 1033| 参数名 | 类型 | 必填 | 说明 | 1034| ------ | -------- | ---- | ------------ | 1035| ids | number[] | 是 | 日程id数组。 | 1036 1037**返回值**: 1038 1039| 类型 | 说明 | 1040| -------------- | ------------------------- | 1041| Promise\<void> | 无返回结果的Promise对象。 | 1042 1043**示例**: 1044 1045```typescript 1046import { BusinessError } from '@kit.BasicServicesKit'; 1047import { calendarMgr } from '../entryability/EntryAbility'; 1048 1049let calendar : calendarManager.Calendar | undefined = undefined; 1050let id1: number = 0; 1051let id2: number = 0; 1052const date = new Date(); 1053const event1: calendarManager.Event = { 1054 type: calendarManager.EventType.NORMAL, 1055 startTime: date.getTime(), 1056 endTime: date.getTime() + 60 * 60 * 1000 1057}; 1058const event2: calendarManager.Event = { 1059 type: calendarManager.EventType.IMPORTANT, 1060 startTime: date.getTime(), 1061 endTime: date.getTime() + 60 * 60 * 1000 1062}; 1063calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1064 if (err) { 1065 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1066 } else { 1067 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1068 calendar = data; 1069 await calendar.addEvent(event1).then((data: number) => { 1070 console.info(`Succeeded in adding event, id -> ${data}`); 1071 id1 = data; 1072 }).catch((err: BusinessError) => { 1073 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1074 }); 1075 await calendar.addEvent(event2).then((data: number) => { 1076 console.info(`Succeeded in adding event, id -> ${data}`); 1077 id2 = data; 1078 }).catch((err: BusinessError) => { 1079 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1080 }); 1081 calendar.deleteEvents([id1, id2]).then(() => { 1082 console.info("Succeeded in deleting events"); 1083 }).catch((err: BusinessError) => { 1084 console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`); 1085 }); 1086 } 1087}); 1088``` 1089 1090### updateEvent 1091 1092updateEvent(event: Event, callback: AsyncCallback\<void>): void 1093 1094更新日程,使用callback异步回调。 1095 1096**系统能力**: SystemCapability.Applications.CalendarData 1097 1098**参数**: 1099 1100| 参数名 | 类型 | 必填 | 说明 | 1101| -------- | -------------------- | ---- | ----------- | 1102| event | [Event](#event) | 是 | Event对象。 | 1103| callback | AsyncCallback\<void> | 是 | 回调函数。 | 1104 1105**示例**: 1106 1107```typescript 1108import { BusinessError } from '@kit.BasicServicesKit'; 1109import { calendarMgr } from '../entryability/EntryAbility'; 1110 1111let calendar : calendarManager.Calendar | undefined = undefined; 1112const date = new Date(); 1113const oriEvent: calendarManager.Event = { 1114 title: 'update', 1115 type: calendarManager.EventType.NORMAL, 1116 description: 'updateEventTest', 1117 startTime: date.getTime(), 1118 endTime: date.getTime() + 60 * 60 * 1000 1119}; 1120calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1121 if (err) { 1122 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1123 } else { 1124 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1125 calendar = data; 1126 await calendar.addEvent(oriEvent).then((data: number) => { 1127 console.info(`Succeeded in adding event, id -> ${data}`); 1128 oriEvent.id = data; 1129 oriEvent.title = 'newUpdate'; 1130 }).catch((err: BusinessError) => { 1131 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1132 }); 1133 calendar.updateEvent(oriEvent, (err: BusinessError) => { 1134 if (err) { 1135 console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`); 1136 } else { 1137 console.info("Succeeded in updating event"); 1138 } 1139 }); 1140 } 1141}); 1142``` 1143 1144### updateEvent 1145 1146updateEvent(event: Event): Promise\<void> 1147 1148更新日程,使用Promise异步回调。 1149 1150**系统能力**: SystemCapability.Applications.CalendarData 1151 1152**参数**: 1153 1154| 参数名 | 类型 | 必填 | 说明 | 1155| ------ | --------------- | ---- | ----------- | 1156| event | [Event](#event) | 是 | Event对象。 | 1157 1158**返回值**: 1159 1160| 类型 | 说明 | 1161| -------------- | ------------------------- | 1162| Promise\<void> | 无返回结果的Promise对象。 | 1163 1164**示例**: 1165 1166```typescript 1167import { BusinessError } from '@kit.BasicServicesKit'; 1168import { calendarMgr } from '../entryability/EntryAbility'; 1169 1170let calendar : calendarManager.Calendar | undefined = undefined; 1171const date = new Date(); 1172const oriEvent: calendarManager.Event = { 1173 title: 'update', 1174 type: calendarManager.EventType.NORMAL, 1175 description: 'updateEventTest', 1176 startTime: date.getTime(), 1177 endTime: date.getTime() + 60 * 60 * 1000 1178}; 1179calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1180 if (err) { 1181 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1182 } else { 1183 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1184 calendar = data; 1185 await calendar.addEvent(oriEvent).then((data: number) => { 1186 console.info(`Succeeded in adding event, id -> ${data}`); 1187 oriEvent.id = data; 1188 oriEvent.title = 'newUpdate'; 1189 }).catch((err: BusinessError) => { 1190 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1191 }); 1192 calendar.updateEvent(oriEvent).then(() => { 1193 console.info(`Succeeded in updating event`); 1194 }).catch((err: BusinessError) => { 1195 console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`); 1196 }); 1197 } 1198}); 1199``` 1200 1201### getEvents 1202 1203getEvents(callback: AsyncCallback\<Event[]>): void 1204 1205查询当前日历下所有日程,使用callback异步回调。 1206 1207**系统能力**: SystemCapability.Applications.CalendarData 1208 1209**参数**: 1210 1211| 参数名 | 类型 | 必填 | 说明 | 1212| -------- | -------------------------------- | ---- | --------------------------------- | 1213| callback | AsyncCallback<[Event](#event)[]> | 是 | 回调函数,返回的是Event对象数组。 | 1214 1215**示例**: 1216 1217```typescript 1218import { BusinessError } from '@kit.BasicServicesKit'; 1219import { calendarMgr } from '../entryability/EntryAbility'; 1220 1221let calendar : calendarManager.Calendar | undefined = undefined; 1222calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1223 if (err) { 1224 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1225 } else { 1226 console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`); 1227 calendar = data; 1228 calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => { 1229 if (err) { 1230 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1231 } else { 1232 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1233 } 1234 }); 1235 } 1236}); 1237``` 1238 1239### getEvents 1240 1241getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void 1242 1243获取Calendar下符合查询条件的Event,使用callback异步回调。 1244 1245**系统能力**: SystemCapability.Applications.CalendarData 1246 1247**参数**: 1248 1249| 参数名 | 类型 | 必填 | 说明 | 1250| ----------- | -------------------------------- | ---- | --------------------------------- | 1251| eventFilter | [EventFilter](#eventfilter) | 是 | 查询条件。 | 1252| eventKey | (keyof [Event](#event))[] | 是 | 查询字段。 | 1253| callback | AsyncCallback<[Event](#event)[]> | 是 | 回调函数,返回的是Event对象数组。 | 1254 1255**示例**: 1256 1257```typescript 1258import { BusinessError } from '@kit.BasicServicesKit'; 1259import { calendarMgr } from '../entryability/EntryAbility'; 1260 1261let calendar : calendarManager.Calendar | undefined = undefined; 1262let id1: number = 0; 1263let id2: number = 0; 1264const date = new Date(); 1265const event1: calendarManager.Event = { 1266 type: calendarManager.EventType.NORMAL, 1267 startTime: date.getTime(), 1268 endTime: date.getTime() + 60 * 60 * 1000 1269}; 1270const event2: calendarManager.Event = { 1271 type: calendarManager.EventType.IMPORTANT, 1272 startTime: date.getTime(), 1273 endTime: date.getTime() + 60 * 60 * 1000 1274}; 1275calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1276 if (err) { 1277 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1278 } else { 1279 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1280 calendar = data; 1281 await calendar.addEvent(event1).then((data: number) => { 1282 console.info(`Succeeded in adding event, id -> ${data}`); 1283 }).catch((err: BusinessError) => { 1284 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1285 }); 1286 await calendar.addEvent(event2).then((data: number) => { 1287 console.info(`Succeeded in adding event, id -> ${data}`); 1288 }).catch((err: BusinessError) => { 1289 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1290 }); 1291 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1292 calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => { 1293 if (err) { 1294 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1295 } else { 1296 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1297 } 1298 }); 1299 } 1300}); 1301``` 1302 1303### getEvents 1304 1305getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]> 1306 1307获取Calendar下符合查询条件的Event,使用Promise异步回调。 1308只有一个入参时,参数必须为查询条件,对应参数类型为EventFilter。 1309当没有入参时,可查询指定日历账户下的所有日程。 1310 1311**系统能力**: SystemCapability.Applications.CalendarData 1312 1313**参数**: 1314 1315| 参数名 | 类型 | 必填 | 说明 | 1316| ----------- | --------------------------- | ---- | ---------- | 1317| eventFilter | [EventFilter](#eventfilter) | 否 | 查询条件。 | 1318| eventKey | (keyof [Event](#event))[] | 否 | 查询字段。 | 1319 1320**返回值**: 1321 1322| 类型 | 说明 | 1323| -------------------------- | ----------------------------------- | 1324| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 | 1325 1326**示例**: 1327 1328```typescript 1329import { BusinessError } from '@kit.BasicServicesKit'; 1330import { calendarMgr } from '../entryability/EntryAbility'; 1331 1332let calendar : calendarManager.Calendar | undefined = undefined; 1333const date = new Date(); 1334const event: calendarManager.Event = { 1335 title: 'MyEvent', 1336 type: calendarManager.EventType.IMPORTANT, 1337 startTime: date.getTime(), 1338 endTime: date.getTime() + 60 * 60 * 1000 1339}; 1340calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1341 if (err) { 1342 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1343 } else { 1344 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1345 calendar = data; 1346 await calendar.addEvent(event).then((data: number) => { 1347 console.info(`Succeeded in adding event, id -> ${data}`); 1348 }).catch((err: BusinessError) => { 1349 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1350 }); 1351 // 根据MyEvent进行模糊查询,如果存在类似标题为MyEvent1类型的日程,也可查询出来 1352 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1353 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1354 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1355 }).catch((err: BusinessError) => { 1356 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1357 }); 1358 } 1359}); 1360``` 1361 1362### getConfig 1363 1364getConfig(): CalendarConfig 1365 1366获取日历配置信息。 1367 1368**系统能力**: SystemCapability.Applications.CalendarData 1369 1370**返回值**: 1371 1372| 类型 | 说明 | 1373| --------------------------------- | -------------- | 1374| [CalendarConfig](#calendarconfig) | 日历配置信息。 | 1375 1376**示例**: 1377 1378```typescript 1379import { calendarMgr } from '../entryability/EntryAbility'; 1380import { BusinessError } from '@kit.BasicServicesKit'; 1381 1382let calendar : calendarManager.Calendar | undefined = undefined; 1383calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1384 if (err) { 1385 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1386 } else { 1387 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1388 calendar = data; 1389 const config = calendar.getConfig(); 1390 console.info(`Succeeded in getting config, config -> ${JSON.stringify(config)}`); 1391 } 1392}); 1393``` 1394 1395### setConfig 1396 1397setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void 1398 1399设置日历配置信息,使用callback异步回调。 1400 1401**系统能力**: SystemCapability.Applications.CalendarData 1402 1403**参数**: 1404 1405| 参数名 | 类型 | 必填 | 说明 | 1406| -------- | --------------------------------- | ---- | -------------- | 1407| config | [CalendarConfig](#calendarconfig) | 是 | 日历配置信息。 | 1408| callback | AsyncCallback\<void> | 是 | 回调函数。 | 1409 1410**示例**: 1411 1412```typescript 1413import { BusinessError } from '@kit.BasicServicesKit'; 1414import { calendarMgr } from '../entryability/EntryAbility'; 1415 1416let calendar : calendarManager.Calendar | undefined = undefined; 1417const config: calendarManager.CalendarConfig = { 1418 enableReminder: true, 1419 color: '#aabbcc' 1420}; 1421calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1422 if (err) { 1423 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1424 } else { 1425 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1426 calendar = data; 1427 calendar.setConfig(config, (err: BusinessError) => { 1428 if (err) { 1429 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1430 } else { 1431 console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`); 1432 } 1433 }); 1434 } 1435}); 1436``` 1437 1438### setConfig 1439 1440setConfig(config: CalendarConfig): Promise\<void> 1441 1442设置日历配置信息,使用Promise异步回调。 1443 1444**系统能力**: SystemCapability.Applications.CalendarData 1445 1446**参数**: 1447 1448| 参数名 | 类型 | 必填 | 说明 | 1449| ------ | --------------------------------- | ---- | -------------- | 1450| config | [CalendarConfig](#calendarconfig) | 是 | 日历配置信息。 | 1451 1452**返回值**: 1453 1454| 类型 | 说明 | 1455| -------------- | ------------------------- | 1456| Promise\<void> | 无返回结果的Promise对象。 | 1457 1458**示例**: 1459 1460```typescript 1461import { BusinessError } from '@kit.BasicServicesKit'; 1462import { calendarMgr } from '../entryability/EntryAbility'; 1463 1464let calendar : calendarManager.Calendar | undefined = undefined; 1465const config: calendarManager.CalendarConfig = { 1466 enableReminder: true, 1467 color: '#aabbcc' 1468}; 1469calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1470 if (err) { 1471 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1472 } else { 1473 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1474 calendar = data; 1475 calendar.setConfig(config).then(() => { 1476 console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`); 1477 }).catch((err: BusinessError) => { 1478 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1479 }); 1480 } 1481}); 1482``` 1483 1484### getAccount 1485 1486getAccount(): CalendarAccount 1487 1488获取日历账户信息。 1489 1490**系统能力**: SystemCapability.Applications.CalendarData 1491 1492**返回值**: 1493 1494| 类型 | 说明 | 1495| ----------------------------------- | -------------- | 1496| [CalendarAccount](#calendaraccount) | 日历账户信息。 | 1497 1498**示例**: 1499 1500```typescript 1501import { calendarMgr } from '../entryability/EntryAbility'; 1502import { BusinessError } from '@kit.BasicServicesKit'; 1503 1504let calendar : calendarManager.Calendar | undefined = undefined; 1505calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1506 if (err) { 1507 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1508 } else { 1509 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1510 calendar = data; 1511 const account = calendar.getAccount(); 1512 console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`); 1513 } 1514}); 1515``` 1516 1517### queryEventInstances<sup>18+</sup> 1518 1519queryEventInstances(start: number, end: number, ids?: number[], eventKey?: (keyof Event)[]): Promise\<Event[]> 1520 1521获取Calendar下符合查询条件的日程实例,使用Promise异步回调。 1522 1523**系统能力**: SystemCapability.Applications.CalendarData 1524 1525**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1526 1527**参数**: 1528 1529| 参数名 | 类型 | 必填 | 说明 | 1530| ----------- | --------------------------- |------|------------| 1531| start | number | 是 | 日程开始时间,类型为13位时间戳。 | 1532| end | number | 是 | 日程结束时间,类型为13位时间戳。 | 1533| ids | number[] | 否 | 需要查询的日程id数组,可为空数组或undefined,id>0。 | 1534| eventKey | (keyof [Event](#event))[] | 否 | 所有查询日程的字段。 | 1535 1536**返回值**: 1537 1538| 类型 | 说明 | 1539| -------------------------- | ----------------------------------- | 1540| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 | 1541 1542**示例**: 1543 1544```typescript 1545import { BusinessError } from '@kit.BasicServicesKit'; 1546import { calendarMgr } from '../entryability/EntryAbility'; 1547 1548let calendar : calendarManager.Calendar | undefined = undefined; 1549const date = new Date(); 1550const event: calendarManager.Event = { 1551 title: 'MyEvent', 1552 type: calendarManager.EventType.IMPORTANT, 1553 startTime: date.getTime(), 1554 endTime: date.getTime() + 60 * 60 * 1000 1555}; 1556calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1557 if (err) { 1558 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1559 } else { 1560 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1561 calendar = data; 1562 await calendar.addEvent(event).then((data: number) => { 1563 console.info(`Succeeded in adding event, id -> ${data}`); 1564 }).catch((err: BusinessError) => { 1565 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1566 }); 1567 calendar?.queryEventInstances(date.getTime(), date.getTime() + 60 * 60 * 1000, undefined, 1568 ["title", "startTime", "endTime", "instanceStartTime", "instanceEndTime",]).then((data: calendarManager.Event[]) => { 1569 console.info(`Succeeded in getting event instances, data -> ${JSON.stringify(data)}`); 1570 }).catch((err: BusinessError) => { 1571 console.error(`Failed to get event instances. Code: ${err.code}, message: ${err.message}`); 1572 }); 1573 } 1574}); 1575``` 1576 1577## CalendarAccount 1578 1579日历账户信息。 1580 1581**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1582 1583**系统能力**:SystemCapability.Applications.CalendarData 1584 1585| 名称 | 类型 | 只读 | 可选 | 说明 | 1586| ----------- | ----------------------------- | ---- |----|----------------------------------------------| 1587| name | string | 是 | 否 | 账户名称(面向开发者),长度限制为0~5000字符。 | 1588| type | [CalendarType](#calendartype) | 否 | 否 | 账户类型。 | 1589| displayName | string | 否 | 是 | 账户显示在日历应用上的名称(面向用户)。不填时,默认为空字符串,长度限制为0~64字符。 | 1590 1591## CalendarConfig 1592 1593日历配置信息。 1594 1595**系统能力**:SystemCapability.Applications.CalendarData 1596 1597| 名称 | 类型 | 只读 | 可选 | 说明 | 1598| -------------- |--------|-------|----| ------------------------------------------------------------ | 1599| enableReminder | boolean | 否 | 是 | 是否打开Calendar下所有Event提醒能力。当取值为true时,该Calendar下所有Event具备提醒能力;当取值为false时,不具备提醒能力,默认具备提醒能力。 | 1600| color | number \| string | 否 | 是 | 设置Calendar颜色。值为number时取值范围为0x000000至0xFFFFFF或0x00000000至0xFFFFFFFF,值为string时长度为7或9,如'#FFFFFF','#FFFFFFFFF'。不填时或输入错误数据时,默认值为'#0A59F7'。 | 1601 1602## Event 1603 1604日程对象,包含日程标题、开始时间、结束时间等信息。 1605 1606**系统能力**:SystemCapability.Applications.CalendarData 1607 1608| 名称 | 类型 | 只读 | 可选 | 说明 | 1609| -------------- | --------------------------------- | ---- |----|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1610| id | number | 否 | 是 | 日程id。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数;当调用[deleteEvent()](#deleteevent)、[deleteEvents()](#deleteevents)删除日程时,日程id数组,日程id需为正整数,传入其他非法入参会报错。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1611| type | [EventType](#eventtype) | 否 | 否 | 日程类型。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1612| title | string | 否 | 是 | 日程标题。长度限制为0~5000字符,不填时,默认为空字符串。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1613| location | [Location](#location) | 否 | 是 | 日程地点。不填时,默认为null。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1614| startTime | number | 否 | 否 | 日程开始时间,需要13位时间戳。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1615| endTime | number | 否 | 否 | 日程结束时间,需要13位时间戳。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1616| isAllDay | boolean | 否 | 是 | 是否为全天日程。当取值为true时,说明为全天日程;当取值为false时,说明不是全天日程,默认为非全天日程。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1617| attendee | [Attendee](#attendee)[] | 否 | 是 | 会议日程参与者。不填时,默认为null。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1618| timeZone | string | 否 | 是 | 日程时区。长度限制为0~5000字符,不填或异常值时,默认为当前所在时区,当需要创建与当前不一样的时区时,可填入对应的时区。可通过[systemDateTime.getTimezone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone)获取当前系统时区。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1619| reminderTime | number[] | 否 | 是 | 日程提醒时间,单位为分钟。填写x分钟,即距开始时间提前x分钟提醒,不填时,默认为不提醒。为负值时表示延期多长时间提醒。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1620| recurrenceRule | [RecurrenceRule](#recurrencerule) | 否 | 是 | 日程重复规则。不填时,默认为不重复。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1621| description | string | 否 | 是 | 日程描述。长度限制为0~5000字符,不填时,默认为空字符串。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1622| service | [EventService](#eventservice) | 否 | 是 | <!--RP1-->日程服务。不填时,默认没有一键服务。暂不支持此功能。<!--RP1End--> <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1623| identifier<sup>12+</sup> | string | 否 | 是 | 写入方可指定日程唯一标识。长度限制为0~5000字符,不填时,默认为null。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1624| isLunar<sup>12+</sup> | boolean | 否 | 是 | 是否为农历日程。当取值为true时,说明为农历日程;当取值为false时,说明不是农历日程,默认为非农历日程。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1625| instanceStartTime<sup>18+</sup> | number | 否 | 是 | 日程实例开始时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1626| instanceEndTime<sup>18+</sup> | number | 否 | 是 | 日程实例结束时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1627 1628## CalendarType 1629 1630账户类型枚举。 1631 1632**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1633 1634**系统能力**:SystemCapability.Applications.CalendarData 1635 1636| 名称 | 值 | 说明 | 1637| ---------- | ------------ | -------------------- | 1638| LOCAL | 'local' | 本地账户。 | 1639| EMAIL | 'email' | 邮箱账户。 | 1640| BIRTHDAY | 'birthday' | 生日账户。 | 1641| CALDAV | 'caldav' | 支持CalDAV协议账户。 | 1642| SUBSCRIBED | 'subscribed' | 订阅账户。 | 1643 1644## Location 1645 1646日程地点。 1647 1648**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1649 1650**系统能力**:SystemCapability.Applications.CalendarData 1651 1652| 名称 | 类型 | 只读 | 可选 | 说明 | 1653| --------- | ------ | ---- |----| ------------------------ | 1654| location | string | 否 | 是 | 地点位置。长度限制为0~5000字符,不填时,默认为空字符串。 | 1655| longitude | number | 否 | 是 | 地点经度。取值范围[-180, 180],默认为0。 | 1656| latitude | number | 否 | 是 | 地点纬度。取值范围[-90, 90],默认为0。 | 1657 1658## EventFilter 1659 1660日程过滤器,查询日程时进行筛选过滤,获取符合条件的日程。 1661 1662通过[filterById()](#filterbyid)、[filterByTime()](#filterbytime)、[filterByTitle()](#filterbytitle)任一方法获取日程过滤器,传入[getEvents()](#getevents)过滤。 1663 1664**系统能力**: SystemCapability.Applications.CalendarData 1665 1666### filterById 1667 1668static filterById(ids: number[]): EventFilter 1669 1670根据日程id过滤日程。 1671 1672**系统能力**: SystemCapability.Applications.CalendarData 1673 1674**参数**: 1675 1676| 参数名 | 类型 | 必填 | 说明 | 1677| ------ | -------- | ---- | ------------ | 1678| ids | number[] | 是 | 日程id数组,日程id需为正整数。 | 1679 1680**返回值**: 1681 1682| 类型 | 说明 | 1683| --------------------------- | -------------------- | 1684| [EventFilter](#eventfilter) | 返回日程过滤器对象。 | 1685 1686**示例**: 1687 1688```typescript 1689import { BusinessError } from '@kit.BasicServicesKit'; 1690import { calendarMgr } from '../entryability/EntryAbility'; 1691 1692let calendar : calendarManager.Calendar | undefined = undefined; 1693let id1: number = 0; 1694let id2: number = 0; 1695const date = new Date(); 1696const event1: calendarManager.Event = { 1697 type: calendarManager.EventType.NORMAL, 1698 startTime: date.getTime(), 1699 endTime: date.getTime() + 60 * 60 * 1000 1700}; 1701const event2: calendarManager.Event = { 1702 type: calendarManager.EventType.IMPORTANT, 1703 startTime: date.getTime(), 1704 endTime: date.getTime() + 60 * 60 * 1000 1705}; 1706calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1707 if (err) { 1708 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1709 } else { 1710 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1711 calendar = data; 1712 await calendar.addEvent(event1).then((data: number) => { 1713 console.info(`Succeeded in adding event, id -> ${data}`); 1714 id1 = data; 1715 }).catch((err: BusinessError) => { 1716 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1717 }); 1718 await calendar.addEvent(event2).then((data: number) => { 1719 console.info(`Succeeded in adding event, id -> ${data}`); 1720 id2 = data; 1721 }).catch((err: BusinessError) => { 1722 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1723 }); 1724 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1725 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1726 console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`); 1727 }).catch((err: BusinessError) => { 1728 console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`); 1729 }); 1730 } 1731}); 1732``` 1733 1734### filterByTime 1735 1736static filterByTime(start: number, end: number): EventFilter 1737 1738根据日程时间过滤日程。 1739 1740**系统能力**: SystemCapability.Applications.CalendarData 1741 1742**参数**: 1743 1744| 参数名 | 类型 | 必填 | 说明 | 1745| ------ | ------ | ---- | ---------- | 1746| start | number | 是 | 开始时间。格式为13位时间戳。 | 1747| end | number | 是 | 结束时间。格式为13位时间戳。 | 1748 1749**返回值**: 1750 1751| 类型 | 说明 | 1752| --------------------------- | -------------------- | 1753| [EventFilter](#eventfilter) | 返回日程过滤器对象。 | 1754 1755**示例**: 1756 1757```typescript 1758import { BusinessError } from '@kit.BasicServicesKit'; 1759import { calendarMgr } from '../entryability/EntryAbility'; 1760 1761let calendar : calendarManager.Calendar | undefined = undefined; 1762const event1: calendarManager.Event = { 1763 type: calendarManager.EventType.NORMAL, 1764 startTime: 1686931200000, 1765 endTime: 1687017600000 1766}; 1767const event2: calendarManager.Event = { 1768 type: calendarManager.EventType.IMPORTANT, 1769 startTime: 1686931200000, 1770 endTime: 1687017600000 1771}; 1772calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1773 if (err) { 1774 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1775 } else { 1776 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1777 calendar = data; 1778 await calendar.addEvent(event1).then((data: number) => { 1779 console.info(`Succeeded in adding event, id -> ${data}`); 1780 }).catch((err: BusinessError) => { 1781 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1782 }); 1783 await calendar.addEvent(event2).then((data: number) => { 1784 console.info(`Succeeded in adding event, id -> ${data}`); 1785 }).catch((err: BusinessError) => { 1786 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1787 }); 1788 const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000); 1789 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1790 console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`); 1791 }).catch((err: BusinessError) => { 1792 console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`); 1793 }); 1794 } 1795}); 1796``` 1797 1798### filterByTitle 1799 1800static filterByTitle(title: string): EventFilter 1801 1802根据日程标题过滤日程,该条件为模糊匹配。 1803 1804**系统能力**: SystemCapability.Applications.CalendarData 1805 1806**参数**: 1807 1808| 参数名 | 类型 | 必填 | 说明 | 1809| ------ | ------ | ---- | ---------- | 1810| title | string | 是 | 日程标题。长度限制为0~5000字符。 | 1811 1812**返回值**: 1813 1814| 类型 | 说明 | 1815| --------------------------- | -------------------- | 1816| [EventFilter](#eventfilter) | 返回日程过滤器对象。 | 1817 1818**示例**: 1819 1820```typescript 1821import { BusinessError } from '@kit.BasicServicesKit'; 1822import { calendarMgr } from '../entryability/EntryAbility'; 1823 1824let calendar : calendarManager.Calendar | undefined = undefined; 1825const event: calendarManager.Event = { 1826 title: 'MyEvent', 1827 type: calendarManager.EventType.NORMAL, 1828 startTime: 1686931200000, 1829 endTime: 1687017600000 1830}; 1831calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1832 if (err) { 1833 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1834 } else { 1835 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1836 calendar = data; 1837 await calendar.addEvent(event).then((data: number) => { 1838 console.info(`Succeeded in adding event, id -> ${data}`); 1839 }).catch((err: BusinessError) => { 1840 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1841 }); 1842 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1843 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1844 console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`); 1845 }).catch((err: BusinessError) => { 1846 console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`); 1847 }); 1848 } 1849}); 1850``` 1851 1852## EventType 1853 1854日程类型枚举。 1855 1856**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1857 1858**系统能力**:SystemCapability.Applications.CalendarData 1859 1860| 名称 | 值 | 说明 | 1861| --------- | ---- |-------------------------| 1862| NORMAL | 0 | 普通日程,例如会议,闹钟等日常提醒的日程。 | 1863| IMPORTANT | 1 | 重要日程,例如结婚纪念日等具有重要意义的日期,不推荐三方开发者使用,重要日程类型不支持一键服务跳转功能及无法自定义提醒时间。 | 1864 1865## RecurrenceRule 1866 1867日程重复规则。 1868 1869**系统能力**:SystemCapability.Applications.CalendarData 1870 1871| 名称 | 类型 | 只读 | 可选 | 说明 | 1872| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1873| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | 否 | 否 | 日程重复规则类型。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1874| expire | number | 否 | 是 | 重复周期截止日。格式为13位时间戳,不填时则日程无截止日期。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1875| count<sup>12+</sup> | number | 否 | 是 | 重复日程的重复次数,取值为非负整数,不填时默认为0,表示不会限定重复次数,会一直重复,取值为负时,效果等同于取值为0。当count与expire同时存在时以count为准。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1876| interval<sup>12+</sup> | number | 否 | 是 | 重复日程的重复间隔,取值为非负整数,不填时默认为0,表示日程按照重复规则一直重复,没有间隔。取值为负时,效果等同于取值为0。当interval与expire同时存在时以expire为准。 <br/>此属性与recurrenceFrequency重复规则相关,不同的重复规则下,表示的重复间隔不同,以interval取2为例,分为以下几种情况:<br/>每天重复时:表示日程每隔两天重复一次。<br/>每周重复时:表示日程每隔两周重复一次。<br/>每月重复时:表示日程每隔两月重复一次。<br/>每年重复时:表示日程每隔两年重复一次。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1877| excludedDates<sup>12+</sup> | number[] | 否 | 是 | 重复日程的排除日期,参数取值为时间戳格式,不填时,默认为空,表示没有排除的日期,0或负数为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1878| daysOfWeek<sup>12+</sup> | number[] | 否 | 是 | 按照一周第几天重复。不填时,默认为空,表示没有一周第几天重复的规则。范围为1到7,对应周一到周日,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1879| daysOfMonth<sup>12+</sup> | number[] | 否 | 是 | 按照一个月第几天重复。不填时,默认为空,表示没有一个月第几天重复的规则。范围为1到31,1到31对应1到31号,其他值为无效值,与空值效果相同。若当月没有29号、30号或31号,则29、30、31也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1880| daysOfYear<sup>12+</sup> | number[] | 否 | 是 | 按照一年第几天重复。不填时,默认为空,表示没有一年第几天重复的规则。范围为1到366,1到366表示一年的1到366天,其他值为无效值,与空值效果相同。若当年没有366天,366也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1881| weeksOfMonth<sup>12+</sup> | number[] | 否 | 是 | 按照一个月第几周重复。不填时,默认为空,表示没有一个月第几周重复的规则。范围为1到5,1到5为每月的第1到第5周,其他值为无效值,与空值效果相同。若当月没有第五周,5也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1882| weeksOfYear<sup>12+</sup> | number[] | 否 | 是 | 按照一年中第几周重复。不填时,默认为空,表示没有一年第几周重复的规则。范围为1到53,1到53为每年的第1到第53周,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1883| monthsOfYear<sup>12+</sup> | number[] | 否 | 是 | 按照一年中第几个月重复。不填时,默认为空,表示没有一年第几个月重复的规则。范围为1到12,1到12为每年的1到12月,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1884## RecurrenceFrequency 1885 1886日程重复规则类型枚举。 1887 1888**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1889 1890**系统能力**:SystemCapability.Applications.CalendarData 1891 1892| 名称 | 值 | 说明 | 1893| ------- | ---- | ---------- | 1894| YEARLY | 0 | 每年重复。 | 1895| MONTHLY | 1 | 每月重复。 | 1896| WEEKLY | 2 | 每周重复。 | 1897| DAILY | 3 | 每天重复。 | 1898 1899## Attendee 1900 1901会议日程参与者。 1902 1903**系统能力**:SystemCapability.Applications.CalendarData 1904 1905| 名称 | 类型 | 只读 | 可选 | 说明 | 1906| ----- | ------ | ---- |----|--------------------------------------------------------------------| 1907| name | string | 否 | 否 | 会议日程参与者的姓名。长度限制为0~5000字符。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1908| email | string | 否 | 否 | 会议日程参与者的邮箱。长度限制为0~5000字符。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1909| role<sup>12+</sup> | [AttendeeRole](#attendeerole12) | 否 | 是 | 会议日程参与者的角色。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1910| status<sup>18+</sup> | [AttendeeStatus](#attendeestatus18) | 否 | 是 | 会议日程参与者的状态,不填时默认为空。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1911| type<sup>18+</sup> | [AttendeeType](#attendeetype18) | 否 | 是 | 会议日程参与者的类型,不填时默认为空。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1912 1913## EventService 1914 1915日程服务。 1916 1917**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1918 1919**系统能力**:SystemCapability.Applications.CalendarData 1920 1921| 名称 | 类型 | 只读 | 可选 | 说明 | 1922| ----------- | --------------------------- | ---- |----|-------------------------------------| 1923| type | [ServiceType](#servicetype) | 否 | 否 | 服务类型。 | 1924| uri | string | 否 | 否 | 服务的uri,格式为DeepLink类型。可以跳转到三方应用相应界面。长度限制为0~5000字符。 | 1925| description | string | 否 | 是 | 服务辅助描述。长度限制为0~5000字符,不填时,默认为空字符串。 | 1926 1927## ServiceType 1928 1929日程服务类型枚举。 1930 1931**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1932 1933**系统能力**:SystemCapability.Applications.CalendarData 1934 1935| 名称 | 值 | 说明 | 1936| --------------- | ---------------- | ------------ | 1937| MEETING | 'Meeting' | 一键入会。 | 1938| WATCHING | 'Watching' | 一键追剧。 | 1939| REPAYMENT | 'Repayment' | 一键还款。 | 1940| LIVE | 'Live' | 一键直播。 | 1941| SHOPPING | 'Shopping' | 一键购物。 | 1942| TRIP | 'Trip' | 一键查看。 | 1943| CLASS | 'Class' | 一键上课。 | 1944| SPORTS_EVENTS | 'SportsEvents' | 一键看赛事。 | 1945| SPORTS_EXERCISE | 'SportsExercise' | 一键运动。 | 1946 1947## AttendeeRole<sup>12+</sup> 1948 1949会议日程参与者角色类型枚举。 1950 1951**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1952 1953**系统能力**:SystemCapability.Applications.CalendarData 1954 1955| 名称 | 值 | 说明 | 1956|--------------|---------------|--------| 1957| ORGANIZER | 'organizer' | 会议组织者。 | 1958| PARTICIPANT | 'participant' | 会议参与者。 | 1959 1960## AttendeeStatus<sup>18+</sup> 1961 1962会议日程参与者状态类型枚举。 1963 1964**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1965 1966**系统能力**:SystemCapability.Applications.CalendarData 1967 1968| 名称 | 值 | 说明 | 1969|----------------------------|-----|----------| 1970| UNKNOWN | 0 | 参与者状态未知。 | 1971| TENTATIVE | 1 | 参与者状态暂定。 | 1972| ACCEPTED | 2 | 参与者已接受。 | 1973| DECLINED | 3 | 参与者已拒绝。 | 1974| UNRESPONSIVE | 4 | 参与者未响应。 | 1975 1976## AttendeeType<sup>18+</sup> 1977 1978会议日程参与者受邀类型枚举。 1979 1980**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1981 1982**系统能力**:SystemCapability.Applications.CalendarData 1983 1984| 名称 | 值 | 说明 | 1985|------------------------|-----|--------------------| 1986| REQUIRED | 1 | 会议日程主送者。 | 1987| OPTIONAL | 2 | 会议日程抄送者。 | 1988| RESOURCE | 3 | 会议中使用的资源(电视或投影仪等)。 | 1989