1# @ohos.calendarManager (Calendar Manager) 2 3The **calendarManager** module provides APIs for calendar and event management, including those for creating, deleting, modifying, and querying calendars and events. 4 5- A [CalendarManager](#calendarmanager) object is used to manage [Calendar](#calendar) objects. 6 7- A [Calendar](#calendar) object contains the account information [CalendarAccount](#calendaraccount) and configuration information [CalendarConfig](#calendarconfig). Calendars and events are in the one-to-many relationship. That is, a calendar can have multiple events, but an event belongs to only one calendar. 8 9> **NOTE** 10> 11> The initial APIs of this module are supported since API version 10. Newly added APIs will be marked with a superscript to indicate their earliest API version. 12 13 14## Modules to Import 15 16```typescript 17import { calendarManager } from '@kit.CalendarKit' 18``` 19 20## calendarManager.getCalendarManager 21 22getCalendarManager(context : Context): CalendarManager 23 24Obtains a **CalendarManager** object based on the context. 25 26**Atomic service API**: This API can be used in atomic services since API version 11. 27 28**System capability**: SystemCapability.Applications.CalendarData 29 30**Model restriction**: This API can be used only in the stage model. 31 32**Parameters** 33 34| Name | Type | Mandatory| Description | 35| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------| 36| context | Context | Yes | Application context. For details about the application context of the stage model, see [Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md).| 37 38**Return value** 39 40| Type | Description | 41| ------------------------------ | ------------------------------------- | 42| CalendarManager | **CalendarManager** object obtained.| 43 44**Example** 45 46```typescript 47// Obtain an mContext object. 48// Obtain a calendarMgr object. 49// The file is auto-generated: entry/src/main/ets/entryability/EntryAbility.ets 50import { 51 abilityAccessCtrl, 52 AbilityConstant, common, PermissionRequestResult, Permissions, UIAbility, Want } from '@kit.AbilityKit'; 53import { BusinessError } from '@kit.BasicServicesKit'; 54import { calendarManager } from '@kit.CalendarKit'; 55import { window } from '@kit.ArkUI'; 56 57export let calendarMgr: calendarManager.CalendarManager | null = null; 58export let mContext: common.UIAbilityContext | null = null; 59export default class EntryAbility extends UIAbility { 60 onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { 61 console.info("Ability onCreate"); 62 } 63 64 onDestroy(): void { 65 console.info("Ability onDestroy"); 66 } 67 68 onWindowStageCreate(windowStage: window.WindowStage): void { 69 // Main window is created, set main page for this ability 70 console.info("Ability onWindowStageCreate"); 71 72 windowStage.loadContent('pages/Index', (err, data) => { 73 if (err.code) { 74 console.error(`Failed to load the content. Code: ${err.code}, message: ${err.message}`); 75 return; 76 } 77 console.info(`Succeeded in loading the content. Data: ${JSON.stringify(data)}`); 78 }); 79 mContext = this.context; 80 const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR']; 81 let atManager = abilityAccessCtrl.createAtManager(); 82 atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => { 83 console.log(`get Permission success, result: ${JSON.stringify(result)}`); 84 calendarMgr = calendarManager.getCalendarManager(mContext); 85 }).catch((error: BusinessError) => { 86 console.error(`get Permission error, error. Code: ${error.code}, message: ${error.message}`); 87 }) 88 } 89 90 onWindowStageDestroy(): void { 91 // Main window is destroyed, release UI related resources 92 console.info("Ability onWindowStageDestroy"); 93 } 94 95 onForeground(): void { 96 // Ability has brought to foreground 97 console.info("Ability onForeground"); 98 } 99 100 onBackground(): void { 101 // Ability has back to background 102 console.info("Ability onBackground"); 103 } 104} 105``` 106 107## CalendarManager 108 109Before calling any of the following APIs, you must use [getCalendarManager()](#calendarmanagergetcalendarmanager) to obtain a **CalendarManager** object. 110 111 112### createCalendar 113 114createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void 115 116Creates a **Calendar** object based on the calendar account information. This API uses an asynchronous callback to return the result. 117 118**Required permissions**: ohos.permission.WRITE_CALENDAR 119 120**System capability**: SystemCapability.Applications.CalendarData 121 122**Parameters** 123 124| Name | Type | Mandatory| Description | 125| --------------- | ------------------------------------- | ---- | ---------------------------------- | 126| calendarAccount | [CalendarAccount](#calendaraccount) | Yes | Calendar account information. | 127| callback | AsyncCallback\<[Calendar](#calendar)> | Yes | Callback used to return the created **Calendar** object.| 128 129**Error codes** 130 131For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 132 133| ID| Error Message | 134| -------- | ------------------------------ | 135| 201 | Permission denied. | 136| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 137| 801 | Capability not supported. | 138 139**Example** 140 141```typescript 142import { BusinessError } from '@kit.BasicServicesKit'; 143import { calendarMgr } from '../entryability/EntryAbility'; 144 145let calendar: calendarManager.Calendar | undefined = undefined; 146const calendarAccount: calendarManager.CalendarAccount = { 147 name: 'CreateMyCalendarByCallBack', 148 type: calendarManager.CalendarType.LOCAL 149}; 150try { 151 calendarMgr?.createCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => { 152 if (err) { 153 console.error(`Failed to create calendar. Code: ${err.code}, message: ${err.message}`); 154 } else { 155 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 156 calendar = data; 157 } 158 }); 159} catch (error) { 160 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 161} 162``` 163 164### createCalendar 165 166createCalendar(calendarAccount: CalendarAccount): Promise\<Calendar> 167 168Creates a **Calendar** object based on the calendar account information. This API uses a promise to return the result. 169 170**Required permissions**: ohos.permission.WRITE_CALENDAR 171 172**System capability**: SystemCapability.Applications.CalendarData 173 174**Parameters** 175 176| Name | Type | Mandatory| Description | 177| --------------- | ----------------------------------- | ---- | -------------- | 178| calendarAccount | [CalendarAccount](#calendaraccount) | Yes | Calendar account information.| 179 180**Return value** 181 182| Type | Description | 183| ------------------------------ | ------------------------------------- | 184| Promise<[Calendar](#calendar)> | Promise used to return the created **Calendar** object.| 185 186**Error codes** 187 188For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 189 190| ID| Error Message | 191| -------- | ------------------------------ | 192| 201 | Permission denied. | 193| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 194| 801 | Capability not supported. | 195 196**Example** 197 198```typescript 199import { BusinessError } from '@kit.BasicServicesKit'; 200import { calendarMgr } from '../entryability/EntryAbility'; 201 202let calendar : calendarManager.Calendar | undefined = undefined; 203const calendarAccount: calendarManager.CalendarAccount = { 204 name: 'CreateMyCalendarByPromise', 205 type: calendarManager.CalendarType.LOCAL, 206 displayName : 'MyApplication' 207}; 208calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 209 console.info(`Succeeded in creating calendar data->${JSON.stringify(data)}`); 210 calendar = data; 211}).catch((error : BusinessError) => { 212 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 213}); 214``` 215 216### deleteCalendar 217 218deleteCalendar(calendar: Calendar, callback: AsyncCallback\<void>): void 219 220Deletes a specified **Calendar** object. This API uses an asynchronous callback to return the result. 221 222**Required permissions**: ohos.permission.WRITE_CALENDAR 223 224**System capability**: SystemCapability.Applications.CalendarData 225 226**Parameters** 227 228| Name | Type | Mandatory| Description | 229| -------- | --------------------- | ---- | -------------- | 230| calendar | [Calendar](#calendar) | Yes | **Calendar** object to delete.| 231| callback | AsyncCallback\<void> | Yes | Asynchronous callback that returns no value. | 232 233**Error codes** 234 235For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 236 237| ID| Error Message | 238| -------- | ------------------------------ | 239| 201 | Permission denied. | 240| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 241| 801 | Capability not supported. | 242 243**Example** 244 245```typescript 246import { BusinessError } from '@kit.BasicServicesKit'; 247import { calendarMgr } from '../entryability/EntryAbility'; 248 249const calendarAccount: calendarManager.CalendarAccount = { 250 name: 'DeleteMyCalendarByCallBack', 251 type: calendarManager.CalendarType.LOCAL 252}; 253calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 254 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 255 calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => { 256 if (err) { 257 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 258 } else { 259 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 260 calendarMgr?.deleteCalendar(data, (err1: BusinessError) => { 261 if (err1) { 262 console.error(`Failed to delete calendar. Code: ${err1.code}, message: ${err1.message}`); 263 } else { 264 console.info("Succeeded in deleting calendar"); 265 } 266 }); 267 } 268 }); 269}).catch((error: BusinessError) => { 270 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 271}) 272``` 273 274### deleteCalendar 275 276deleteCalendar(calendar: Calendar): Promise\<void> 277 278Deletes a specified **Calendar** object. This API uses a promise to return the result. 279 280**Required permissions**: ohos.permission.WRITE_CALENDAR 281 282**System capability**: SystemCapability.Applications.CalendarData 283 284**Parameters** 285 286| Name | Type | Mandatory| Description | 287| -------- | --------------------- | ---- | -------------- | 288| calendar | [Calendar](#calendar) | Yes | **Calendar** object to delete.| 289 290**Return value** 291 292| Type | Description | 293| -------------- | ------------------------- | 294| Promise\<void> | Promise that returns no value.| 295 296**Error codes** 297 298For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 299 300| ID| Error Message | 301| -------- | ------------------------------ | 302| 201 | Permission denied. | 303| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 304| 801 | Capability not supported. | 305 306**Example** 307 308```typescript 309import { BusinessError } from '@kit.BasicServicesKit'; 310import { calendarMgr } from '../entryability/EntryAbility'; 311 312const calendarAccount: calendarManager.CalendarAccount = { 313 name: 'DeleteMyCalendarByPromise', 314 type: calendarManager.CalendarType.LOCAL 315}; 316calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 317 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 318 calendarMgr?.getCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 319 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 320 calendarMgr?.deleteCalendar(data).then(() => { 321 console.info("Succeeded in deleting calendar"); 322 }).catch((err: BusinessError) => { 323 console.error(`Failed to delete calendar. Code: ${err.code}, message: ${err.message}`); 324 }); 325 }).catch((err: BusinessError) => { 326 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 327 }); 328}).catch((error: BusinessError) => { 329 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 330}) 331``` 332 333### getCalendar 334 335getCalendar(callback: AsyncCallback\<Calendar>): void 336 337Obtains the default **Calendar** object, which is created when the data storage runs for the first time. This API uses an asynchronous callback to return the result. You can call this API instead of [createCalendar()](#createcalendar) to use the default calendar for a new event. 338 339**Required permissions**: ohos.permission.READ_CALENDAR 340 341**Atomic service API**: This API can be used in atomic services since API version 11. 342 343**System capability**: SystemCapability.Applications.CalendarData 344 345**Parameters** 346 347| Name | Type | Mandatory| Description | 348| -------- | ------------------------------------ | ---- | ------------------------------------ | 349| callback | AsyncCallback<[Calendar](#calendar)> | Yes | Callback used to return the obtained **Calendar** object.| 350 351**Error codes** 352 353For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 354 355| ID| Error Message | 356| -------- | ------------------------------ | 357| 201 | Permission denied. | 358| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 359| 801 | Capability not supported. | 360 361**Example** 362 363```typescript 364import { BusinessError } from '@kit.BasicServicesKit'; 365import { calendarMgr } from '../entryability/EntryAbility'; 366 367let calendar : calendarManager.Calendar | undefined = undefined; 368calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 369 if (err) { 370 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 371 } else { 372 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 373 calendar = data; 374 } 375}); 376``` 377 378### getCalendar 379 380getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void 381 382Obtains a specified **Calendar** object. This API uses an asynchronous callback to return the result. 383 384**Required permissions**: ohos.permission.READ_CALENDAR 385 386**Atomic service API**: This API can be used in atomic services since API version 11. 387 388**System capability**: SystemCapability.Applications.CalendarData 389 390**Parameters** 391 392| Name | Type | Mandatory| Description | 393| --------------- | ------------------------------------ | ---- | ------------------------------------ | 394| calendarAccount | [CalendarAccount](#calendaraccount) | Yes | Calendar account information. | 395| callback | AsyncCallback<[Calendar](#calendar)> | Yes | Callback used to return the obtained **Calendar** object.| 396 397**Error codes** 398 399For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 400 401| ID| Error Message | 402| -------- | ------------------------------ | 403| 201 | Permission denied. | 404| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 405| 801 | Capability not supported. | 406 407**Example** 408 409```typescript 410import { BusinessError } from '@kit.BasicServicesKit'; 411import { calendarMgr } from '../entryability/EntryAbility'; 412 413let calendar : calendarManager.Calendar | undefined = undefined; 414const calendarAccount: calendarManager.CalendarAccount = { 415 name: 'MyCalendar', 416 type: calendarManager.CalendarType.LOCAL 417}; 418calendarMgr?.createCalendar(calendarAccount).then((data: calendarManager.Calendar) => { 419 console.info(`Succeeded in creating calendar, data -> ${JSON.stringify(data)}`); 420 calendarMgr?.getCalendar(calendarAccount, (err: BusinessError, data: calendarManager.Calendar) => { 421 if (err) { 422 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 423 } else { 424 console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`); 425 calendar = data; 426 } 427 }); 428}).catch((error: BusinessError) => { 429 console.error(`Failed to create calendar. Code: ${error.code}, message: ${error.message}`); 430}) 431``` 432 433### getCalendar 434 435getCalendar(calendarAccount?: CalendarAccount): Promise\<Calendar> 436 437Obtains the default **Calendar** object or a specified **Calendar** object. This API uses a promise to return the result. 438 439**Required permissions**: ohos.permission.READ_CALENDAR 440 441**Atomic service API**: This API can be used in atomic services since API version 11. 442 443**System capability**: SystemCapability.Applications.CalendarData 444 445**Parameters** 446 447| Name | Type | Mandatory| Description | 448| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ | 449| calendarAccount | [CalendarAccount](#calendaraccount) | No | Calendar account information, which is used to obtain a specified **Calendar** object. If this parameter is not set, the default **Calendar** object is obtained.| 450 451**Return value** 452 453| Type | Description | 454| ------------------------------ | --------------------------------------- | 455| Promise<[Calendar](#calendar)> | Promise used to return the obtained **Calendar** object.| 456 457**Error codes** 458 459For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 460 461| ID| Error Message | 462| -------- | ------------------------------ | 463| 201 | Permission denied. | 464| 401 | Parameter error. Possible causes: Incorrect parameter types. | 465| 801 | Capability not supported. | 466 467**Example** 468 469```typescript 470import { BusinessError } from '@kit.BasicServicesKit'; 471import { calendarMgr } from '../entryability/EntryAbility'; 472 473let calendar : calendarManager.Calendar | undefined = undefined; 474calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => { 475 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 476 calendar = data; 477}).catch((err: BusinessError) => { 478 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 479}); 480``` 481 482### getAllCalendars 483 484getAllCalendars(callback: AsyncCallback\<Calendar[]>): void 485 486Obtains the created and default **Calendar** objects of the current application. This API uses an asynchronous callback to return the result. 487 488**Required permissions**: ohos.permission.READ_CALENDAR 489 490**System capability**: SystemCapability.Applications.CalendarData 491 492**Parameters** 493 494| Name | Type | Mandatory| Description | 495| -------- | -------------------------------------- | ---- | ----------------------------------------- | 496| callback | AsyncCallback<[Calendar](#calendar)[]> | Yes | Callback used to return an array of obtained **Calendar** objects.| 497 498**Error codes** 499 500For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 501 502| ID| Error Message | 503| -------- | ------------------------------ | 504| 201 | Permission denied. | 505| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 506| 801 | Capability not supported. | 507 508**Example** 509 510```typescript 511import { BusinessError } from '@kit.BasicServicesKit'; 512import { calendarMgr } from '../entryability/EntryAbility'; 513 514calendarMgr?.getAllCalendars((err: BusinessError, data: calendarManager.Calendar[]) => { 515 if (err) { 516 console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`); 517 } else { 518 console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`); 519 data.forEach((calendar) => { 520 const account = calendar.getAccount(); 521 console.info(`account -> ${JSON.stringify(account)}`); 522 }) 523 } 524}); 525``` 526 527### getAllCalendars 528 529getAllCalendars(): Promise\<Calendar[]> 530 531Obtains the created and default **Calendar** objects of the current application. This API uses a promise to return the result. 532 533**Required permissions**: ohos.permission.READ_CALENDAR 534 535**System capability**: SystemCapability.Applications.CalendarData 536 537**Return value** 538 539| Type | Description | 540| -------------------------------- | ------------------------------------------- | 541| Promise<[Calendar](#calendar)[]> | Promise used to return an array of obtained **Calendar** objects.| 542 543**Error codes** 544 545For details about the error codes, see [Universal Error Codes](../errorcode-universal.md). 546 547| ID| Error Message | 548| -------- | ------------------------------ | 549| 201 | Permission denied. | 550| 401 | Parameter error. Possible causes: Incorrect parameter types. | 551| 801 | Capability not supported. | 552 553**Example** 554 555```typescript 556import { BusinessError } from '@kit.BasicServicesKit'; 557import { calendarMgr } from '../entryability/EntryAbility'; 558 559calendarMgr?.getAllCalendars().then((data: calendarManager.Calendar[]) => { 560 console.info(`Succeeded in getting all calendars, data -> ${JSON.stringify(data)}`); 561 data.forEach((calendar) => { 562 const account = calendar.getAccount(); 563 console.info(`account -> ${JSON.stringify(account)}`); 564 }) 565}).catch((err: BusinessError) => { 566 console.error(`Failed to get all calendars. Code: ${err.code}, message: ${err.message}`); 567}); 568``` 569 570### editEvent<sup>12+</sup> 571 572editEvent(event: Event): Promise\<number> 573 574Creates a single event. If the input parameter **Event** is not set to the event ID, the event creation screen is displayed when this API is called. This API uses a Promise to return the result. 575 576**Atomic service API**: This API can be used in atomic services since API version 12. 577 578**System capability**: SystemCapability.Applications.CalendarData 579 580**Parameters** 581 582| Name| Type | Mandatory| Description | 583| ------ | --------------- | ---- | ----------- | 584| event | [Event](#event) | Yes | **Event** object.| 585 586**Return value** 587 588| Type | Description | 589| -------------- | ------------------------ | 590| Promise\<number> | Promise used to return the event ID.| 591 592**Example** 593 594```typescript 595import { BusinessError } from '@kit.BasicServicesKit'; 596import { calendarMgr } from '../entryability/EntryAbility'; 597 598const date = new Date(); 599const event: calendarManager.Event = { 600 title: 'title', 601 type: calendarManager.EventType.NORMAL, 602 startTime: date.getTime(), 603 endTime: date.getTime() + 60 * 60 * 1000 604}; 605calendarMgr?.editEvent(event).then((eventId: number): void => { 606 console.info(`create Event id = ${eventId}`); 607}).catch((err: BusinessError) => { 608 console.error(`Failed to create Event. Code: ${err.code}, message: ${err.message}`); 609}); 610``` 611 612## Calendar 613 614In the following API examples, you need to use [createCalendar()](#createcalendar) or [getCalendar()](#getcalendar) to obtain a **Calendar** object before calling related APIs. 615 616### Attributes 617 618**Atomic service API**: This API can be used in atomic services since API version 11. 619 620**System capability**: SystemCapability.Applications.CalendarData 621 622| Name| Type | Read-only| Optional| Description | 623| ---- | ------ | ---- |----| -------- | 624| id | number | Yes | No | Calendar account ID.| 625 626### addEvent 627 628addEvent(event: Event, callback: AsyncCallback\<number>): void 629 630Creates an event, with no event ID specified in **Event**. This API uses an asynchronous callback to return the result. 631 632**Atomic service API**: This API can be used in atomic services since API version 11. 633 634**System capability**: SystemCapability.Applications.CalendarData 635 636**Parameters** 637 638| Name | Type | Mandatory| Description | 639| -------- | ---------------------- | ---- | ---------------------- | 640| event | [Event](#event) | Yes | **Event** object. | 641| callback | AsyncCallback\<number> | Yes | Callback used to return the event ID.| 642 643**Example** 644 645```typescript 646import { BusinessError } from '@kit.BasicServicesKit'; 647import { calendarMgr } from '../entryability/EntryAbility'; 648 649let calendar : calendarManager.Calendar | undefined = undefined; 650const date = new Date(); 651const event: calendarManager.Event = { 652 type: calendarManager.EventType.NORMAL, 653 startTime: date.getTime(), 654 endTime: date.getTime() + 60 * 60 * 1000 655}; 656calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => { 657 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 658 calendar = data; 659 calendar.addEvent(event, (err: BusinessError, data: number): void => { 660 if (err) { 661 console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`); 662 } else { 663 console.info(`Succeeded in adding event, id -> ${data}`); 664 } 665 }); 666}).catch((err: BusinessError) => { 667 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 668}); 669``` 670 671### addEvent 672 673addEvent(event: Event): Promise\<number> 674 675Creates an event, with no event ID specified in **Event**. This API uses a promise to return the result. 676 677**Atomic service API**: This API can be used in atomic services since API version 11. 678 679**System capability**: SystemCapability.Applications.CalendarData 680 681**Parameters** 682 683| Name| Type | Mandatory| Description | 684| ------ | --------------- | ---- | ----------- | 685| event | [Event](#event) | Yes | **Event** object.| 686 687**Return value** 688 689| Type | Description | 690| ---------------- | --------------------------- | 691| Promise\<number> | Promise used to return the event ID.| 692 693**Example** 694 695```typescript 696import { BusinessError } from '@kit.BasicServicesKit'; 697import { calendarMgr } from '../entryability/EntryAbility'; 698 699let calendar : calendarManager.Calendar | undefined = undefined; 700const date = new Date(); 701const event: calendarManager.Event = { 702 type: calendarManager.EventType.NORMAL, 703 startTime: date.getTime(), 704 endTime: date.getTime() + 60 * 60 * 1000 705}; 706calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 707 if (err) { 708 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 709 } else { 710 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 711 calendar = data; 712 calendar.addEvent(event).then((data: number) => { 713 console.info(`Succeeded in adding event, id -> ${data}`); 714 }).catch((err: BusinessError) => { 715 console.error(`Failed to addEvent. Code: ${err.code}, message: ${err.message}`); 716 }); 717 } 718}); 719``` 720 721### addEvents 722 723addEvents(events: Event[], callback: AsyncCallback\<void>): void 724 725Creates events in batches, with no event ID specified in **Event**. This API uses an asynchronous callback to return the result. 726 727**System capability**: SystemCapability.Applications.CalendarData 728 729**Parameters** 730 731| Name | Type | Mandatory| Description | 732| -------- | -------------------- | ---- | --------------- | 733| events | [Event](#event)[] | Yes | Array of **Event** objects.| 734| callback | AsyncCallback\<void> | Yes | Callback used to return the result. | 735 736**Example** 737 738```typescript 739import { BusinessError } from '@kit.BasicServicesKit'; 740import { calendarMgr } from '../entryability/EntryAbility'; 741 742let calendar : calendarManager.Calendar | undefined = undefined; 743const date = new Date(); 744const events: calendarManager.Event[] = [ 745 { 746 type: calendarManager.EventType.NORMAL, 747 startTime: date.getTime(), 748 endTime: date.getTime() + 60 * 60 * 1000 749 }, 750 { 751 type: calendarManager.EventType.NORMAL, 752 startTime: date.getTime(), 753 endTime: date.getTime() + 60 * 60 * 1000 754 } 755]; 756calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 757 if (err) { 758 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 759 } else { 760 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 761 calendar = data; 762 calendar.addEvents(events, (err: BusinessError) => { 763 if (err) { 764 console.error(`Failed to add events. Code: ${err.code}, message: ${err.message}`); 765 } else { 766 console.info("Succeeded in adding events"); 767 } 768 }); 769 } 770}); 771``` 772 773### addEvents 774 775addEvents(events: Event[]): Promise\<void> 776 777Creates events in batches, with no event ID specified in **Event**. This API uses a promise to return the result. 778 779**System capability**: SystemCapability.Applications.CalendarData 780 781**Parameters** 782 783| Name| Type | Mandatory| Description | 784| ------ | ----------------- | ---- | --------------- | 785| events | [Event](#event)[] | Yes | Array of **Event** objects.| 786 787**Return value** 788 789| Type | Description | 790| -------------- | ------------------------- | 791| Promise\<void> | Promise that returns no value.| 792 793**Example** 794 795```typescript 796import { BusinessError } from '@kit.BasicServicesKit'; 797import { calendarMgr } from '../entryability/EntryAbility'; 798 799let calendar : calendarManager.Calendar | undefined = undefined; 800const date = new Date(); 801const events: calendarManager.Event[] = [ 802 { 803 type: calendarManager.EventType.NORMAL, 804 startTime: date.getTime(), 805 endTime: date.getTime() + 60 * 60 * 1000 806 }, 807 { 808 type: calendarManager.EventType.NORMAL, 809 startTime: date.getTime(), 810 endTime: date.getTime() + 60 * 60 * 1000 811 } 812]; 813calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 814 if (err) { 815 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 816 } else { 817 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 818 calendar = data; 819 calendar.addEvents(events).then(() => { 820 console.info("Succeeded in adding events"); 821 }).catch((err: BusinessError) => { 822 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 823 }); 824 } 825}); 826``` 827 828### deleteEvent 829 830deleteEvent(id: number, callback: AsyncCallback\<void>): void 831 832Deletes an event with the specified ID. This API uses an asynchronous callback to return the result. 833 834**System capability**: SystemCapability.Applications.CalendarData 835 836**Parameters** 837 838| Name | Type | Mandatory| Description | 839| -------- | -------------------- | ---- | ---------- | 840| id | number | Yes | Event ID. | 841| callback | AsyncCallback\<void> | Yes | Callback used to return the result.| 842 843**Example** 844 845```typescript 846import { BusinessError } from '@kit.BasicServicesKit'; 847import { calendarMgr } from '../entryability/EntryAbility'; 848 849let calendar : calendarManager.Calendar | undefined = undefined; 850let id: number = 0; 851const date = new Date(); 852const event: calendarManager.Event = { 853 type: calendarManager.EventType.NORMAL, 854 startTime: date.getTime(), 855 endTime: date.getTime() + 60 * 60 * 1000 856}; 857calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 858 if (err) { 859 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 860 } else { 861 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 862 calendar = data; 863 await calendar.addEvent(event).then((data: number) => { 864 console.info(`Succeeded in adding event, id -> ${data}`); 865 id = data; 866 }).catch((err: BusinessError) => { 867 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 868 }); 869 calendar.deleteEvent(id, (err: BusinessError) => { 870 if (err) { 871 console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`); 872 } else { 873 console.info(`Succeeded in deleting event, err -> ${JSON.stringify(err)}`); 874 } 875 }); 876 } 877}); 878``` 879 880### deleteEvent 881 882deleteEvent(id: number): Promise\<void> 883 884Deletes an event with the specified ID. This API uses a promise to return the result. 885 886**System capability**: SystemCapability.Applications.CalendarData 887 888**Parameters** 889 890| Name| Type | Mandatory| Description | 891| ------ | ------ | ---- | -------- | 892| id | number | Yes | Event ID.| 893 894**Return value** 895 896| Type | Description | 897| -------------- | ------------------------- | 898| Promise\<void> | Promise that returns no value.| 899 900**Example** 901 902```typescript 903import { BusinessError } from '@kit.BasicServicesKit'; 904import { calendarMgr } from '../entryability/EntryAbility'; 905 906let calendar : calendarManager.Calendar | undefined = undefined; 907let id: number = 0; 908const date = new Date(); 909const event: calendarManager.Event = { 910 type: calendarManager.EventType.NORMAL, 911 startTime: date.getTime(), 912 endTime: date.getTime() + 60 * 60 * 1000 913}; 914calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 915 if (err) { 916 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 917 } else { 918 console.info(`Succeeded in getting calendar data->${JSON.stringify(data)}`); 919 calendar = data; 920 await calendar.addEvent(event).then((data: number) => { 921 console.info(`Succeeded in adding event, id -> ${data}`); 922 id = data; 923 }).catch((err: BusinessError) => { 924 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 925 }); 926 calendar.deleteEvent(id).then(() => { 927 console.info("Succeeded in deleting event"); 928 }).catch((err: BusinessError) => { 929 console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`); 930 }); 931 } 932}); 933``` 934 935### deleteEvents 936 937deleteEvents(ids: number[], callback: AsyncCallback\<void>): void 938 939Deletes a batch of events with the specified IDs. This API uses an asynchronous callback to return the result. 940 941**System capability**: SystemCapability.Applications.CalendarData 942 943**Parameters** 944 945| Name | Type | Mandatory| Description | 946| -------- | -------------------- | ---- | ------------ | 947| ids | number[] | Yes | Array of event IDs.| 948| callback | AsyncCallback\<void> | Yes | Callback used to return the result. | 949 950**Example** 951 952```typescript 953import { BusinessError } from '@kit.BasicServicesKit'; 954import { calendarMgr } from '../entryability/EntryAbility'; 955 956let calendar : calendarManager.Calendar | undefined = undefined; 957let id1: number = 0; 958let id2: number = 0; 959const date = new Date(); 960const event1: calendarManager.Event = { 961 type: calendarManager.EventType.NORMAL, 962 startTime: date.getTime(), 963 endTime: date.getTime() + 60 * 60 * 1000 964}; 965const event2: calendarManager.Event = { 966 type: calendarManager.EventType.IMPORTANT, 967 startTime: date.getTime(), 968 endTime: date.getTime() + 60 * 60 * 1000 969}; 970calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 971 if (err) { 972 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 973 } else { 974 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 975 calendar = data; 976 await calendar.addEvent(event1).then((data: number) => { 977 console.info(`Succeeded in adding event, id -> ${data}`); 978 id1 = data; 979 }).catch((err: BusinessError) => { 980 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 981 }); 982 await calendar.addEvent(event2).then((data: number) => { 983 console.info(`Succeeded in adding event, id -> ${data}`); 984 id2 = data; 985 }).catch((err: BusinessError) => { 986 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 987 }); 988 calendar.deleteEvents([id1, id2], (err: BusinessError) => { 989 if (err) { 990 console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`); 991 } else { 992 console.info("Succeeded in deleting events"); 993 } 994 }); 995 } 996}); 997``` 998 999### deleteEvents 1000 1001deleteEvents(ids: number[]): Promise\<void> 1002 1003Deletes a batch of events with the specified IDs. This API uses a promise to return the result. 1004 1005**System capability**: SystemCapability.Applications.CalendarData 1006 1007**Parameters** 1008 1009| Name| Type | Mandatory| Description | 1010| ------ | -------- | ---- | ------------ | 1011| ids | number[] | Yes | Array of event IDs.| 1012 1013**Return value** 1014 1015| Type | Description | 1016| -------------- | ------------------------- | 1017| Promise\<void> | Promise that returns no value.| 1018 1019**Example** 1020 1021```typescript 1022import { BusinessError } from '@kit.BasicServicesKit'; 1023import { calendarMgr } from '../entryability/EntryAbility'; 1024 1025let calendar : calendarManager.Calendar | undefined = undefined; 1026let id1: number = 0; 1027let id2: number = 0; 1028const date = new Date(); 1029const event1: calendarManager.Event = { 1030 type: calendarManager.EventType.NORMAL, 1031 startTime: date.getTime(), 1032 endTime: date.getTime() + 60 * 60 * 1000 1033}; 1034const event2: calendarManager.Event = { 1035 type: calendarManager.EventType.IMPORTANT, 1036 startTime: date.getTime(), 1037 endTime: date.getTime() + 60 * 60 * 1000 1038}; 1039calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1040 if (err) { 1041 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1042 } else { 1043 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1044 calendar = data; 1045 await calendar.addEvent(event1).then((data: number) => { 1046 console.info(`Succeeded in adding event, id -> ${data}`); 1047 id1 = data; 1048 }).catch((err: BusinessError) => { 1049 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1050 }); 1051 await calendar.addEvent(event2).then((data: number) => { 1052 console.info(`Succeeded in adding event, id -> ${data}`); 1053 id2 = data; 1054 }).catch((err: BusinessError) => { 1055 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1056 }); 1057 calendar.deleteEvents([id1, id2]).then(() => { 1058 console.info("Succeeded in deleting events"); 1059 }).catch((err: BusinessError) => { 1060 console.error(`Failed to delete events. Code: ${err.code}, message: ${err.message}`); 1061 }); 1062 } 1063}); 1064``` 1065 1066### updateEvent 1067 1068updateEvent(event: Event, callback: AsyncCallback\<void>): void 1069 1070Updates an event. This API uses an asynchronous callback to return the result. 1071 1072**System capability**: SystemCapability.Applications.CalendarData 1073 1074**Parameters** 1075 1076| Name | Type | Mandatory| Description | 1077| -------- | -------------------- | ---- | ----------- | 1078| event | [Event](#event) | Yes | **Event** object.| 1079| callback | AsyncCallback\<void> | Yes | Callback used to return the result. | 1080 1081**Example** 1082 1083```typescript 1084import { BusinessError } from '@kit.BasicServicesKit'; 1085import { calendarMgr } from '../entryability/EntryAbility'; 1086 1087let calendar : calendarManager.Calendar | undefined = undefined; 1088const date = new Date(); 1089const oriEvent: calendarManager.Event = { 1090 title: 'update', 1091 type: calendarManager.EventType.NORMAL, 1092 description: 'updateEventTest', 1093 startTime: date.getTime(), 1094 endTime: date.getTime() + 60 * 60 * 1000 1095}; 1096calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1097 if (err) { 1098 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1099 } else { 1100 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1101 calendar = data; 1102 await calendar.addEvent(oriEvent).then((data: number) => { 1103 console.info(`Succeeded in adding event, id -> ${data}`); 1104 oriEvent.id = data; 1105 oriEvent.title = 'newUpdate'; 1106 }).catch((err: BusinessError) => { 1107 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1108 }); 1109 calendar.updateEvent(oriEvent, (err: BusinessError) => { 1110 if (err) { 1111 console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`); 1112 } else { 1113 console.info("Succeeded in updating event"); 1114 } 1115 }); 1116 } 1117}); 1118``` 1119 1120### updateEvent 1121 1122updateEvent(event: Event): Promise\<void> 1123 1124Updates an event. This API uses a promise to return the result. 1125 1126**System capability**: SystemCapability.Applications.CalendarData 1127 1128**Parameters** 1129 1130| Name| Type | Mandatory| Description | 1131| ------ | --------------- | ---- | ----------- | 1132| event | [Event](#event) | Yes | **Event** object.| 1133 1134**Return value** 1135 1136| Type | Description | 1137| -------------- | ------------------------- | 1138| Promise\<void> | Promise that returns no value.| 1139 1140**Example** 1141 1142```typescript 1143import { BusinessError } from '@kit.BasicServicesKit'; 1144import { calendarMgr } from '../entryability/EntryAbility'; 1145 1146let calendar : calendarManager.Calendar | undefined = undefined; 1147const date = new Date(); 1148const oriEvent: calendarManager.Event = { 1149 title: 'update', 1150 type: calendarManager.EventType.NORMAL, 1151 description: 'updateEventTest', 1152 startTime: date.getTime(), 1153 endTime: date.getTime() + 60 * 60 * 1000 1154}; 1155calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1156 if (err) { 1157 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1158 } else { 1159 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1160 calendar = data; 1161 await calendar.addEvent(oriEvent).then((data: number) => { 1162 console.info(`Succeeded in adding event, id -> ${data}`); 1163 oriEvent.id = data; 1164 oriEvent.title = 'newUpdate'; 1165 }).catch((err: BusinessError) => { 1166 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1167 }); 1168 calendar.updateEvent(oriEvent).then(() => { 1169 console.info(`Succeeded in updating event`); 1170 }).catch((err: BusinessError) => { 1171 console.error(`Failed to update event. Code: ${err.code}, message: ${err.message}`); 1172 }); 1173 } 1174}); 1175``` 1176 1177### getEvents 1178 1179getEvents(callback: AsyncCallback\<Event[]>): void 1180 1181Obtains all events in a calendar. This API uses an asynchronous callback to return the result. 1182 1183**System capability**: SystemCapability.Applications.CalendarData 1184 1185**Parameters** 1186 1187| Name | Type | Mandatory| Description | 1188| -------- | -------------------------------- | ---- | --------------------------------- | 1189| callback | AsyncCallback<[Event](#event)[]> | Yes | Callback used to return an array of events.| 1190 1191**Example** 1192 1193```typescript 1194import { BusinessError } from '@kit.BasicServicesKit'; 1195import { calendarMgr } from '../entryability/EntryAbility'; 1196 1197let calendar : calendarManager.Calendar | undefined = undefined; 1198calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1199 if (err) { 1200 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1201 } else { 1202 console.info(`Succeeded in getting calendar data -> ${JSON.stringify(data)}`); 1203 calendar = data; 1204 calendar.getEvents((err: BusinessError, data: calendarManager.Event[]) => { 1205 if (err) { 1206 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1207 } else { 1208 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1209 } 1210 }); 1211 } 1212}); 1213``` 1214 1215### getEvents 1216 1217getEvents(eventFilter: EventFilter, eventKey: (keyof Event)[], callback: AsyncCallback\<Event[]>):void 1218 1219Obtains all events in a calendar that match the filter criteria. This API uses an asynchronous callback to return the result. 1220 1221**System capability**: SystemCapability.Applications.CalendarData 1222 1223**Parameters** 1224 1225| Name | Type | Mandatory| Description | 1226| ----------- | -------------------------------- | ---- | --------------------------------- | 1227| eventFilter | [EventFilter](#eventfilter) | Yes | Filter criteria. | 1228| eventKey | (keyof [Event](#event))[] | Yes | Filter field. | 1229| callback | AsyncCallback<[Event](#event)[]> | Yes | Callback used to return an array of events.| 1230 1231**Example** 1232 1233```typescript 1234import { BusinessError } from '@kit.BasicServicesKit'; 1235import { calendarMgr } from '../entryability/EntryAbility'; 1236 1237let calendar : calendarManager.Calendar | undefined = undefined; 1238let id1: number = 0; 1239let id2: number = 0; 1240const date = new Date(); 1241const event1: calendarManager.Event = { 1242 type: calendarManager.EventType.NORMAL, 1243 startTime: date.getTime(), 1244 endTime: date.getTime() + 60 * 60 * 1000 1245}; 1246const event2: calendarManager.Event = { 1247 type: calendarManager.EventType.IMPORTANT, 1248 startTime: date.getTime(), 1249 endTime: date.getTime() + 60 * 60 * 1000 1250}; 1251calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1252 if (err) { 1253 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1254 } else { 1255 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1256 calendar = data; 1257 await calendar.addEvent(event1).then((data: number) => { 1258 console.info(`Succeeded in adding event, id -> ${data}`); 1259 }).catch((err: BusinessError) => { 1260 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1261 }); 1262 await calendar.addEvent(event2).then((data: number) => { 1263 console.info(`Succeeded in adding event, id -> ${data}`); 1264 }).catch((err: BusinessError) => { 1265 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1266 }); 1267 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1268 calendar.getEvents(filter, ['title', 'type', 'startTime', 'endTime'], (err: BusinessError, data: calendarManager.Event[]) => { 1269 if (err) { 1270 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1271 } else { 1272 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1273 } 1274 }); 1275 } 1276}); 1277``` 1278 1279### getEvents 1280 1281getEvents(eventFilter?: EventFilter, eventKey?: (keyof Event)[]): Promise\<Event[]> 1282 1283Obtains all events in a calendar that match the filter criteria. This API uses a promise to return the result. 1284 1285**System capability**: SystemCapability.Applications.CalendarData 1286 1287**Parameters** 1288 1289| Name | Type | Mandatory| Description | 1290| ----------- | --------------------------- | ---- | ---------- | 1291| eventFilter | [EventFilter](#eventfilter) | No | Filter criteria.| 1292| eventKey | (keyof [Event](#event))[] | No | Filter field.| 1293 1294**Return value** 1295 1296| Type | Description | 1297| -------------------------- | ----------------------------------- | 1298| Promise<[Event](#event)[]> | Promise used to return the result, which is an array of **Event** objects.| 1299 1300**Example** 1301 1302```typescript 1303import { BusinessError } from '@kit.BasicServicesKit'; 1304import { calendarMgr } from '../entryability/EntryAbility'; 1305 1306let calendar : calendarManager.Calendar | undefined = undefined; 1307const date = new Date(); 1308const event: calendarManager.Event = { 1309 title: 'MyEvent', 1310 type: calendarManager.EventType.IMPORTANT, 1311 startTime: date.getTime(), 1312 endTime: date.getTime() + 60 * 60 * 1000 1313}; 1314calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1315 if (err) { 1316 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1317 } else { 1318 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1319 calendar = data; 1320 await calendar.addEvent(event).then((data: number) => { 1321 console.info(`Succeeded in adding event, id -> ${data}`); 1322 }).catch((err: BusinessError) => { 1323 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1324 }); 1325 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1326 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1327 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1328 }).catch((err: BusinessError) => { 1329 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1330 }); 1331 } 1332}); 1333``` 1334 1335### getConfig 1336 1337getConfig(): CalendarConfig 1338 1339Obtains the calendar configuration information. 1340 1341**System capability**: SystemCapability.Applications.CalendarData 1342 1343**Return value** 1344 1345| Type | Description | 1346| --------------------------------- | -------------- | 1347| [CalendarConfig](#calendarconfig) | Calendar configuration information.| 1348 1349**Example** 1350 1351```typescript 1352import { calendarMgr } from '../entryability/EntryAbility'; 1353import { BusinessError } from '@kit.BasicServicesKit'; 1354 1355let calendar : calendarManager.Calendar | undefined = undefined; 1356calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1357 if (err) { 1358 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1359 } else { 1360 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1361 calendar = data; 1362 const config = calendar.getConfig(); 1363 console.info("Succeeded in getting config"); 1364 } 1365}); 1366``` 1367 1368### setConfig 1369 1370setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void 1371 1372Sets the calendar configuration information. This API uses an asynchronous callback to return the result. 1373 1374**System capability**: SystemCapability.Applications.CalendarData 1375 1376**Parameters** 1377 1378| Name | Type | Mandatory| Description | 1379| -------- | --------------------------------- | ---- | -------------- | 1380| config | [CalendarConfig](#calendarconfig) | Yes | Calendar configuration information.| 1381| callback | AsyncCallback\<void> | Yes | Callback used to return the result. | 1382 1383**Example** 1384 1385```typescript 1386import { BusinessError } from '@kit.BasicServicesKit'; 1387import { calendarMgr } from '../entryability/EntryAbility'; 1388 1389let calendar : calendarManager.Calendar | undefined = undefined; 1390const config: calendarManager.CalendarConfig = { 1391 enableReminder: true, 1392 color: '#aabbcc' 1393}; 1394calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1395 if (err) { 1396 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1397 } else { 1398 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1399 calendar = data; 1400 calendar.setConfig(config, (err: BusinessError) => { 1401 if (err) { 1402 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1403 } else { 1404 console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`); 1405 } 1406 }); 1407 } 1408}); 1409``` 1410 1411### setConfig 1412 1413setConfig(config: CalendarConfig): Promise\<void> 1414 1415Sets the calendar configuration information. This API uses a promise to return the result. 1416 1417**System capability**: SystemCapability.Applications.CalendarData 1418 1419**Parameters** 1420 1421| Name| Type | Mandatory| Description | 1422| ------ | --------------------------------- | ---- | -------------- | 1423| config | [CalendarConfig](#calendarconfig) | Yes | Calendar configuration information.| 1424 1425**Return value** 1426 1427| Type | Description | 1428| -------------- | ------------------------- | 1429| Promise\<void> | Promise that returns no value.| 1430 1431**Example** 1432 1433```typescript 1434import { BusinessError } from '@kit.BasicServicesKit'; 1435import { calendarMgr } from '../entryability/EntryAbility'; 1436 1437let calendar : calendarManager.Calendar | undefined = undefined; 1438const config: calendarManager.CalendarConfig = { 1439 enableReminder: true, 1440 color: '#aabbcc' 1441}; 1442calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1443 if (err) { 1444 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1445 } else { 1446 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1447 calendar = data; 1448 calendar.setConfig(config).then(() => { 1449 console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`); 1450 }).catch((err: BusinessError) => { 1451 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1452 }); 1453 } 1454}); 1455``` 1456 1457### getAccount 1458 1459getAccount(): CalendarAccount 1460 1461Obtains the calendar account information. 1462 1463**System capability**: SystemCapability.Applications.CalendarData 1464 1465**Return value** 1466 1467| Type | Description | 1468| ----------------------------------- | -------------- | 1469| [CalendarAccount](#calendaraccount) | Calendar account information.| 1470 1471**Example** 1472 1473```typescript 1474import { calendarMgr } from '../entryability/EntryAbility'; 1475import { BusinessError } from '@kit.BasicServicesKit'; 1476 1477let calendar : calendarManager.Calendar | undefined = undefined; 1478calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1479 if (err) { 1480 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1481 } else { 1482 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1483 calendar = data; 1484 const account = calendar.getAccount(); 1485 console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`); 1486 } 1487}); 1488``` 1489 1490## CalendarAccount 1491 1492Describes the calendar account information. 1493 1494**Atomic service API**: This API can be used in atomic services since API version 11. 1495 1496**System capability**: SystemCapability.Applications.CalendarData 1497 1498| Name | Type | Read-only| Optional| Description | 1499| ----------- | ----------------------------- | ---- |----| -------------------------------------- | 1500| name | string | Yes | No | Account name. | 1501| type | [CalendarType](#calendartype) | No | No | Account type. | 1502| displayName | string | No | Yes | Display name of the account. If this parameter is not set, an empty string is used.| 1503 1504## CalendarConfig 1505 1506Describes the calendar configuration information. 1507 1508**System capability**: SystemCapability.Applications.CalendarData 1509 1510| Name | Type | Read-only | Optional| Description | 1511| -------------- |--------|-------|----| ------------------------------------------------------------ | 1512| enableReminder | boolean | No | Yes | Whether to enable the reminder for events in the calendar. The value **true** means to enable the reminder for events in the calendar, and **false** means the opposite. The default value is **true**.| 1513| color | number \| string | No | Yes | Calendar color. If this parameter is not set, the default value **'#0A59F7'** is used. | 1514 1515## Event 1516 1517Describes an **Event** object, including the event title, start time, and end time. 1518 1519**System capability**: SystemCapability.Applications.CalendarData 1520 1521| Name | Type | Read-only| Optional| Description | 1522| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1523| id | number | No | Yes | Event ID. This parameter does not need to be set in the [addEvent()](#addevent) or [addEvents()](#addevents) API.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1524| type | [EventType](#eventtype) | No | No | Event type.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1525| title | string | No | Yes | Event title. If this parameter is not set, an empty string is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1526| location | [Location](#location) | No | Yes | Event location. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1527| startTime | number | No | No | Start time of the event. The value is a 13-digit timestamp.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1528| endTime | number | No | No | End time of the event. The value is a 13-digit timestamp.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1529| isAllDay | boolean | No | Yes | Whether the event is an all-day event. The value **true** means that the event is an all-day event, and **false** means the opposite. The default value is **false**.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1530| attendee | [Attendee](#attendee)[] | No | Yes | Event attendee. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1531| timeZone | string | No | Yes | Time zone of the event. If this parameter is not set, the current system time zone is used. You can call the [getTimeZone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone) API to obtain the current system time zone.<br>**Atomic service API**: This API can be used in atomic services since API version 11.| 1532| reminderTime | number[] | No | Yes | Amount of time that the reminder occurs before the start of the event, in minutes. For example, if the value is 5, the reminder occurs 5 minutes before the event starts. If this parameter is not set, no reminder is set. The value can be negative.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1533| recurrenceRule | [RecurrenceRule](#recurrencerule) | No | Yes | Recurrence rule of the event. If this parameter is not set, the value does not recur.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1534| description | string | No | Yes | Event description. If this parameter is not set, an empty string is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1535| service | [EventService](#eventservice) | No | Yes | Event service. If this parameter is not set, no service is available.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1536| identifier<sup>12+</sup> | string | No | Yes | A unique ID of an event can be specified. If this parameter is not set, the default null value is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 1537| isLunar<sup>12+</sup> | boolean | No | Yes | Whether it is a lunar calendar event. The value **true** means that the event is a lunar calendar event, and **false** means the opposite. The default value is **false**.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 1538 1539## CalendarType 1540 1541Enumerates the account types. 1542 1543**Atomic service API**: This API can be used in atomic services since API version 11. 1544 1545**System capability**: SystemCapability.Applications.CalendarData 1546 1547| Name | Value | Description | 1548| ---------- | ------------ | -------------------- | 1549| LOCAL | 'local' | Local account. | 1550| EMAIL | 'email' | Email account. | 1551| BIRTHDAY | 'birthday' | Birthday account. | 1552| CALDAV | 'caldav' | CalDAV account.| 1553| SUBSCRIBED | 'subscribed' | Subscription account. | 1554 1555## Location 1556 1557Describes the event location. 1558 1559**Atomic service API**: This API can be used in atomic services since API version 11. 1560 1561**System capability**: SystemCapability.Applications.CalendarData 1562 1563| Name | Type | Read-only| Optional| Description | 1564| --------- | ------ | ---- |----| ------------------------ | 1565| location | string | No | Yes | Location. The default value is an empty string.| 1566| longitude | number | No | Yes | Longitude of the location. The default value is **0**. | 1567| latitude | number | No | Yes | Latitude of the location. The default value is **0**. | 1568 1569## EventFilter 1570 1571Implements an event filter. 1572 1573You can use [filterById()](#filterbyid), [filterByTime()](#filterbytime), or [filterByTitle()](#filterbytitle) to obtain an event filter, and then pass the filter in [getEvents()](#getevents) for filtering. 1574 1575### filterById 1576 1577static filterById(ids: number[]): EventFilter 1578 1579Defines an event ID based filter. 1580 1581**System capability**: SystemCapability.Applications.CalendarData 1582 1583**Parameters** 1584 1585| Name| Type | Mandatory| Description | 1586| ------ | -------- | ---- | ------------ | 1587| ids | number[] | Yes | Array of event IDs.| 1588 1589**Return value** 1590 1591| Type | Description | 1592| --------------------------- | -------------------- | 1593| [EventFilter](#eventfilter) | **EventFilter** object.| 1594 1595**Example** 1596 1597```typescript 1598import { BusinessError } from '@kit.BasicServicesKit'; 1599import { calendarMgr } from '../entryability/EntryAbility'; 1600 1601let calendar : calendarManager.Calendar | undefined = undefined; 1602let id1: number = 0; 1603let id2: number = 0; 1604const date = new Date(); 1605const event1: calendarManager.Event = { 1606 type: calendarManager.EventType.NORMAL, 1607 startTime: date.getTime(), 1608 endTime: date.getTime() + 60 * 60 * 1000 1609}; 1610const event2: calendarManager.Event = { 1611 type: calendarManager.EventType.IMPORTANT, 1612 startTime: date.getTime(), 1613 endTime: date.getTime() + 60 * 60 * 1000 1614}; 1615calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1616 if (err) { 1617 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1618 } else { 1619 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1620 calendar = data; 1621 await calendar.addEvent(event1).then((data: number) => { 1622 console.info(`Succeeded in adding event, id -> ${data}`); 1623 id1 = data; 1624 }).catch((err: BusinessError) => { 1625 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1626 }); 1627 await calendar.addEvent(event2).then((data: number) => { 1628 console.info(`Succeeded in adding event, id -> ${data}`); 1629 id2 = data; 1630 }).catch((err: BusinessError) => { 1631 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1632 }); 1633 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1634 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1635 console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`); 1636 }).catch((err: BusinessError) => { 1637 console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`); 1638 }); 1639 } 1640}); 1641``` 1642 1643### filterByTime 1644 1645static filterByTime(start: number, end: number): EventFilter 1646 1647Defines an event time based filter. 1648 1649**System capability**: SystemCapability.Applications.CalendarData 1650 1651**Parameters** 1652 1653| Name| Type | Mandatory| Description | 1654| ------ | ------ | ---- | ---------- | 1655| start | number | Yes | Start time.| 1656| end | number | Yes | End time.| 1657 1658**Return value** 1659 1660| Type | Description | 1661| --------------------------- | -------------------- | 1662| [EventFilter](#eventfilter) | **EventFilter** object.| 1663 1664**Example** 1665 1666```typescript 1667import { BusinessError } from '@kit.BasicServicesKit'; 1668import { calendarMgr } from '../entryability/EntryAbility'; 1669 1670let calendar : calendarManager.Calendar | undefined = undefined; 1671const event1: calendarManager.Event = { 1672 type: calendarManager.EventType.NORMAL, 1673 startTime: 1686931200000, 1674 endTime: 1687017600000 1675}; 1676const event2: calendarManager.Event = { 1677 type: calendarManager.EventType.IMPORTANT, 1678 startTime: 1686931200000, 1679 endTime: 1687017600000 1680}; 1681calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1682 if (err) { 1683 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1684 } else { 1685 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1686 calendar = data; 1687 await calendar.addEvent(event1).then((data: number) => { 1688 console.info(`Succeeded in adding event, id -> ${data}`); 1689 }).catch((err: BusinessError) => { 1690 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1691 }); 1692 await calendar.addEvent(event2).then((data: number) => { 1693 console.info(`Succeeded in adding event, id -> ${data}`); 1694 }).catch((err: BusinessError) => { 1695 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1696 }); 1697 const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000); 1698 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1699 console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`); 1700 }).catch((err: BusinessError) => { 1701 console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`); 1702 }); 1703 } 1704}); 1705``` 1706 1707### filterByTitle 1708 1709static filterByTitle(title: string): EventFilter 1710 1711Defines an event title based filter. 1712 1713**System capability**: SystemCapability.Applications.CalendarData 1714 1715**Parameters** 1716 1717| Name| Type | Mandatory| Description | 1718| ------ | ------ | ---- | ---------- | 1719| title | string | Yes | Event title.| 1720 1721**Return value** 1722 1723| Type | Description | 1724| --------------------------- | -------------------- | 1725| [EventFilter](#eventfilter) | **EventFilter** object.| 1726 1727**Example** 1728 1729```typescript 1730import { BusinessError } from '@kit.BasicServicesKit'; 1731import { calendarMgr } from '../entryability/EntryAbility'; 1732 1733let calendar : calendarManager.Calendar | undefined = undefined; 1734const event: calendarManager.Event = { 1735 title: 'MyEvent', 1736 type: calendarManager.EventType.NORMAL, 1737 startTime: 1686931200000, 1738 endTime: 1687017600000 1739}; 1740calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1741 if (err) { 1742 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1743 } else { 1744 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1745 calendar = data; 1746 await calendar.addEvent(event).then((data: number) => { 1747 console.info(`Succeeded in adding event, id -> ${data}`); 1748 }).catch((err: BusinessError) => { 1749 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1750 }); 1751 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1752 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1753 console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`); 1754 }).catch((err: BusinessError) => { 1755 console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`); 1756 }); 1757 } 1758}); 1759``` 1760 1761## EventType 1762 1763Enumerates event types. 1764 1765**Atomic service API**: This API can be used in atomic services since API version 11. 1766 1767**System capability**: SystemCapability.Applications.CalendarData 1768 1769| Name | Value | Description | 1770| --------- | ---- | -------------------- | 1771| NORMAL | 0 | Normal event. | 1772| IMPORTANT | 1 | Important event. This type of event supports countdown.| 1773 1774## RecurrenceRule 1775 1776Describes the recurrence rule of the event. 1777 1778**System capability**: SystemCapability.Applications.CalendarData 1779 1780| Name | Type | Read-only| Optional| Description | 1781| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------| 1782| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | No | No | Type of the event recurrence rule.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1783| expire | number | No | Yes | End date of the recurrence period. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1784| count<sup>12+</sup> | number | No | Yes | Number of times that an event recurs. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 1785| interval<sup>12+</sup> | number | No | Yes | Interval for event recurrence. If this parameter is not set, the default value **0** is used.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 1786| excludedDates<sup>12+</sup> | number[] | No | Yes | Excluded dates of event recurrence.<br>**Atomic service API**: This API can be used in atomic services since API version 12. | 1787## RecurrenceFrequency 1788 1789Enumerates the types of the event recurrence rule. 1790 1791**Atomic service API**: This API can be used in atomic services since API version 11. 1792 1793**System capability**: SystemCapability.Applications.CalendarData 1794 1795| Name | Value | Description | 1796| ------- | ---- | ---------- | 1797| YEARLY | 0 | Yearly.| 1798| MONTHLY | 1 | Monthly.| 1799| WEEKLY | 2 | Weekly.| 1800| DAILY | 3 | Daily.| 1801 1802## Attendee 1803 1804Describes the attendee of the event. 1805 1806**System capability**: SystemCapability.Applications.CalendarData 1807 1808| Name | Type | Read-only| Optional| Description | 1809| ----- | ------ | ---- |----|-----------------------------------------------------------------------| 1810| name | string | No | No | Name of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1811| email | string | No | No | Email address of the attendee.<br>**Atomic service API**: This API can be used in atomic services since API version 11. | 1812| role<sup>12+</sup> | [AttendeeRole](#attendeerole12) | No | Yes | Participant role.<br>**Atomic service API**: This API can be used in atomic services since API version 12.| 1813 1814## EventService 1815 1816Describes the event service. 1817 1818**Atomic service API**: This API can be used in atomic services since API version 11. 1819 1820**System capability**: SystemCapability.Applications.CalendarData 1821 1822| Name | Type | Read-only| Optional| Description | 1823| ----------- | --------------------------- | ---- |----| ------------------------------------- | 1824| type | [ServiceType](#servicetype) | No | No | Service type. | 1825| uri | string | No | No | URI of the service. It can be used to redirect the user to a page of another application.| 1826| description | string | No | Yes | Description of the service. If this parameter is not set, an empty string is used. | 1827 1828## ServiceType 1829 1830Enumerates the event service types. 1831 1832**Atomic service API**: This API can be used in atomic services since API version 11. 1833 1834**System capability**: SystemCapability.Applications.CalendarData 1835 1836| Name | Value | Description | 1837| --------------- | ---------------- | ------------ | 1838| MEETING | 'Meeting' | Join a meeting. | 1839| WATCHING | 'Watching' | Watch a video. | 1840| REPAYMENT | 'Repayment' | Make a payment. | 1841| LIVE | 'Live' | Watch live TV. | 1842| SHOPPING | 'Shopping' | Go shopping. | 1843| TRIP | 'Trip' | View the trip. | 1844| CLASS | 'Class' | Join class. | 1845| SPORTS_EVENTS | 'SportsEvents' | Watch a sports event.| 1846| SPORTS_EXERCISE | 'SportsExercise' | Start exercising. | 1847 1848## AttendeeRole<sup>12+</sup> 1849 1850Enumerates the participant role types. 1851 1852**Atomic service API**: This API can be used in atomic services since API version 12. 1853 1854**System capability**: SystemCapability.Applications.CalendarData 1855 1856| Name | Value | Description | 1857|--------------|---------------|--------| 1858| ORGANIZER<sup>12+</sup> | 'organizer' | Conference organizer.| 1859| PARTICIPANT<sup>12+</sup> | 'participant' | Conference participant.| 1860