1# @ohos.calendarManager (日程管理能力) 2 3本模块提供日历与日程管理能力,包括日历和日程的创建、删除、修改、查询等。 4 5- 日历管理器[CalendarManager](#calendarmanager)用于管理日历[Calendar](#calendar)。 6 7- 日历[Calendar](#calendar)主要包含账户信息[CalendarAccount](#calendaraccount)和配置信息[CalendarConfig](#calendarconfig)。日历Calendar与日程Event属于从属关系,需要先创建日历Calendar对象,然后再通过日历Calendar创建日程Event对象,一个Calendar可以有多个Event,一个Event只属于一个Calendar。日历管理器是对日历的管理,日程过滤器是对日程的管理。 8 9> **说明:** 10> 11> 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 12 13 14## 导入模块 15 16```typescript 17import { calendarManager } from '@kit.CalendarKit' 18``` 19 20## calendarManager.getCalendarManager 21 22getCalendarManager(context: Context): CalendarManager 23 24根据上下文获取CalendarManager对象,用于管理日历。 25 26**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 27 28**系统能力**: SystemCapability.Applications.CalendarData 29 30**模型约束**:此接口仅可在Stage模型下使用。 31 32**参数**: 33 34| 参数名 | 类型 | 必填 | 说明 | 35| -------- | --------------------------- | ---- |----------------------------------------------------------------------------------------------------------------| 36| context | Context | 是 | 应用上下文Context,Stage模型的应用Context定义见[Context](../apis-ability-kit/js-apis-inner-application-uiAbilityContext.md)。 | 37 38**返回值**: 39 40| 类型 | 说明 | 41| ------------------------------ | ------------------------------------- | 42| CalendarManager | 返回创建的CalendarManager对象。 | 43 44**示例**: 45 46```typescript 47// 获取上下文mContext 48// 获取日历管理器calendarMgr 49// 该文件为系统生成,目录: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.info(`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 109下列API示例中需先通过[getCalendarManager()](#calendarmanagergetcalendarmanager)方法获取CalendarManager对象,再通过此对象调用对应方法,进行Calendar的创建、删除、修改、查询等操作。 110 111 112### createCalendar 113 114createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback\<Calendar>): void 115 116根据日历账户信息,创建一个Calendar对象,使用callback异步回调。 117 118**需要权限**: ohos.permission.WRITE_CALENDAR 119 120**系统能力**: SystemCapability.Applications.CalendarData 121 122**参数**: 123 124| 参数名 | 类型 | 必填 | 说明 | 125| --------------- | ------------------------------------- | ---- | ---------------------------------- | 126| calendarAccount | [CalendarAccount](#calendaraccount) | 是 | 日历账户信息。 | 127| callback | AsyncCallback\<[Calendar](#calendar)> | 是 | 回调函数,返回创建的Calendar对象。 | 128 129**错误码:** 130 131以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 132 133| 错误码ID | 错误信息 | 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**示例**: 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 168根据日历账户信息,创建一个Calendar对象,使用Promise异步回调。 169 170**需要权限**: ohos.permission.WRITE_CALENDAR 171 172**系统能力**: SystemCapability.Applications.CalendarData 173 174**参数**: 175 176| 参数名 | 类型 | 必填 | 说明 | 177| --------------- | ----------------------------------- | ---- | -------------- | 178| calendarAccount | [CalendarAccount](#calendaraccount) | 是 | 日历账户信息。 | 179 180**返回值**: 181 182| 类型 | 说明 | 183| ------------------------------ | ------------------------------------- | 184| Promise<[Calendar](#calendar)> | Promise对象,返回创建的Calendar对象。 | 185 186**错误码:** 187 188以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 189 190| 错误码ID | 错误信息 | 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**示例**: 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 220删除指定Calendar对象,使用callback异步回调。 221 222**需要权限**: ohos.permission.WRITE_CALENDAR 223 224**系统能力**: SystemCapability.Applications.CalendarData 225 226**参数**: 227 228| 参数名 | 类型 | 必填 | 说明 | 229| -------- | --------------------- | ---- | -------------- | 230| calendar | [Calendar](#calendar) | 是 | 即将删除的Calendar对象。 | 231| callback | AsyncCallback\<void> | 是 | 无返回结果的AsyncCallback对象。 | 232 233**错误码:** 234 235以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 236 237| 错误码ID | 错误信息 | 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**示例**: 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 278删除指定Calendar对象,使用Promise异步回调。 279 280**需要权限**: ohos.permission.WRITE_CALENDAR 281 282**系统能力**: SystemCapability.Applications.CalendarData 283 284**参数**: 285 286| 参数名 | 类型 | 必填 | 说明 | 287| -------- | --------------------- | ---- | -------------- | 288| calendar | [Calendar](#calendar) | 是 | 即将删除的Calendar对象。 | 289 290**返回值**: 291 292| 类型 | 说明 | 293| -------------- | ------------------------- | 294| Promise\<void> | 无返回结果的Promise对象。 | 295 296**错误码:** 297 298以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 299 300| 错误码ID | 错误信息 | 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**示例**: 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 337获取默认Calendar对象,默认Calendar是日历存储首次运行时创建的,若创建Event时不关注其Calendar归属,则无须通过[createCalendar()](#createcalendar)创建Calendar,直接使用默认Calendar,使用callback异步回调。 338 339**需要权限**:ohos.permission.READ_CALENDAR 340 341**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 342 343**系统能力**: SystemCapability.Applications.CalendarData 344 345**参数**: 346 347| 参数名 | 类型 | 必填 | 说明 | 348| -------- | ------------------------------------ | ---- | ------------------------------------ | 349| callback | AsyncCallback<[Calendar](#calendar)> | 是 | 回调函数,返回查询到的Calendar对象。 | 350 351**错误码:** 352 353以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 354 355| 错误码ID | 错误信息 | 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**示例**: 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 382获取指定Calendar对象,使用callback异步回调。 383 384**需要权限**: ohos.permission.READ_CALENDAR 385 386**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 387 388**系统能力**: SystemCapability.Applications.CalendarData 389 390**参数**: 391 392| 参数名 | 类型 | 必填 | 说明 | 393| --------------- | ------------------------------------ | ---- | ------------------------------------ | 394| calendarAccount | [CalendarAccount](#calendaraccount) | 是 | 日历账户信息。 | 395| callback | AsyncCallback<[Calendar](#calendar)> | 是 | 回调函数,返回查询到的Calendar对象。 | 396 397**错误码:** 398 399以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 400 401| 错误码ID | 错误信息 | 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**示例**: 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 437获取默认Calendar对象或者指定Calendar对象,使用Promise异步回调。 438 439**需要权限**: ohos.permission.READ_CALENDAR 440 441**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 442 443**系统能力**: SystemCapability.Applications.CalendarData 444 445**参数**: 446 447| 参数名 | 类型 | 必填 | 说明 | 448| --------------- | ----------------------------------- | ---- | ------------------------------------------------------------ | 449| calendarAccount | [CalendarAccount](#calendaraccount) | 否 | 日历账户信息,用来获取指定Calendar对象,不填时,表示获取默认Calendar对象。 | 450 451**返回值**: 452 453| 类型 | 说明 | 454| ------------------------------ | --------------------------------------- | 455| Promise<[Calendar](#calendar)> | Promise对象,返回查询到的Calendar对象。 | 456 457**错误码:** 458 459以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 460 461| 错误码ID | 错误信息 | 462| -------- | ------------------------------ | 463| 201 | Permission denied. | 464| 401 | Parameter error. Possible causes: Incorrect parameter types. | 465| 801 | Capability not supported. | 466 467**示例**: 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 486获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用callback异步回调。 487 488**需要权限**:ohos.permission.READ_CALENDAR 489 490**系统能力**: SystemCapability.Applications.CalendarData 491 492**参数**: 493 494| 参数名 | 类型 | 必填 | 说明 | 495| -------- | -------------------------------------- | ---- | ----------------------------------------- | 496| callback | AsyncCallback<[Calendar](#calendar)[]> | 是 | 回调函数, 返回查询到的Calendar对象数组。 | 497 498**错误码:** 499 500以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 501 502| 错误码ID | 错误信息 | 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**示例**: 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 531获取当前应用所有创建的Calendar对象以及默认Calendar对象,使用Promise异步回调。 532 533**需要权限**: ohos.permission.READ_CALENDAR 534 535**系统能力**: SystemCapability.Applications.CalendarData 536 537**返回值**: 538 539| 类型 | 说明 | 540| -------------------------------- | ------------------------------------------- | 541| Promise<[Calendar](#calendar)[]> | Promise对象,返回查询到的Calendar对象数组。 | 542 543**错误码:** 544 545以下错误码详细介绍请参考[通用错误码](../errorcode-universal.md)。 546 547| 错误码ID | 错误信息 | 548| -------- | ------------------------------ | 549| 201 | Permission denied. | 550| 401 | Parameter error. Possible causes: Incorrect parameter types. | 551| 801 | Capability not supported. | 552 553**示例**: 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 574创建单个日程,入参Event不填日程id,调用该接口会跳转到日程创建页面,使用Promise异步回调。使用该接口创建的日程,三方应用无法查询和修改,只能通过系统日历进行查询和修改。 575 576**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 577 578**系统能力**: SystemCapability.Applications.CalendarData 579 580**参数**: 581 582| 参数名 | 类型 | 必填 | 说明 | 583| ------ | --------------- | ---- | ----------- | 584| event | [Event](#event) | 是 | Event对象。 | 585 586**返回值**: 587 588| 类型 | 说明 | 589| -------------- |-----------------------------------------------------------------------------| 590| Promise<number> | Promise对象,返回日程的id,日程id是日程的唯一标识符,是数据库的自增主键。创建失败时没有返回值;当返回值小于0时代表用户取消创建;当返回值大于0时代表日程创建成功;没有等于0的情况。 | 591 592**示例**: 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 614下列API示例中需先通过[createCalendar()](#createcalendar)、[getCalendar()](#getcalendar)中任一方法获取Calendar对象,再通过此对象调用对应方法,对该Calendar下的日程进行创建、删除、修改、查询等操作。 615 616### 属性 617 618**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 619 620**系统能力**:SystemCapability.Applications.CalendarData 621 622| 名称 | 类型 | 只读 | 可选 | 说明 | 623| ---- | ------ | ---- |----|--------------------------------------------------------------------------| 624| id | number | 是 | 否 | 日历账户id,日历账户id是日历账户的唯一标识符,是数据库的自增主键,小于0代表日历账户创建失败,大于0代表日历账户创建成功,没有等于0的情况。 | 625 626### addEvent 627 628addEvent(event: Event, callback: AsyncCallback\<number>): void 629 630创建日程,入参Event不填日程id,使用callback异步回调。 631 632**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 633 634**系统能力**: SystemCapability.Applications.CalendarData 635 636**参数**: 637 638| 参数名 | 类型 | 必填 | 说明 | 639| -------- | ---------------------- | ---- |-----------------------------------------------------------------------| 640| event | [Event](#event) | 是 | Event对象。 | 641| callback | AsyncCallback\<number> | 是 | 回调函数,返回日程id,日程id是日程的唯一标识符,是数据库的自增主键,小于0代表日程创建失败,大于0代表日程创建成功,没有等于0的情况。 | 642 643**示例**: 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 675创建日程,入参Event不填日程id,使用Promise异步回调。 676 677**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 678 679**系统能力**: SystemCapability.Applications.CalendarData 680 681**参数**: 682 683| 参数名 | 类型 | 必填 | 说明 | 684| ------ | --------------- | ---- | ----------- | 685| event | [Event](#event) | 是 | Event对象。 | 686 687**返回值**: 688 689| 类型 | 说明 | 690| ---------------- | --------------------------- | 691| Promise\<number> | Promise对象,返回日程的id。 | 692 693**示例**: 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 725批量创建日程,入参Event不填日程id,使用callback异步回调。 726 727**系统能力**: SystemCapability.Applications.CalendarData 728 729**参数**: 730 731| 参数名 | 类型 | 必填 | 说明 | 732| -------- | -------------------- | ---- | --------------- | 733| events | [Event](#event)[] | 是 | Event对象数组。 | 734| callback | AsyncCallback\<void> | 是 | 回调函数。 | 735 736**示例**: 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 777批量创建日程,入参Event不填日程id,使用Promise异步回调。 778 779**系统能力**: SystemCapability.Applications.CalendarData 780 781**参数**: 782 783| 参数名 | 类型 | 必填 | 说明 | 784| ------ | ----------------- | ---- | --------------- | 785| events | [Event](#event)[] | 是 | Event对象数组。 | 786 787**返回值**: 788 789| 类型 | 说明 | 790| -------------- | ------------------------- | 791| Promise\<void> | 无返回结果的Promise对象。 | 792 793**示例**: 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 832删除指定id的日程,使用callback异步回调。 833 834**系统能力**: SystemCapability.Applications.CalendarData 835 836**参数**: 837 838| 参数名 | 类型 | 必填 | 说明 | 839| -------- | -------------------- | ---- |----------------------------------------| 840| id | number | 是 | 日程id,传入的日程id为正整数,表示已创建日程的id,是日程的唯一标识符。 | 841| callback | AsyncCallback\<void> | 是 | 回调函数。 | 842 843**示例**: 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 calendar.addEvent(event).then((data: number) => { 864 console.info(`Succeeded in adding event, id -> ${data}`); 865 id = data; 866 calendar?.deleteEvent(id, (err: BusinessError) => { 867 if (err) { 868 console.error(`Failed to delete event. Code: ${err.code}, message: ${err.message}`); 869 } else { 870 console.info(`Succeeded in deleting event, err -> ${JSON.stringify(err)}`); 871 } 872 }); 873 }).catch((err: BusinessError) => { 874 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 875 }); 876 } 877}); 878``` 879 880### deleteEvent 881 882deleteEvent(id: number): Promise\<void> 883 884删除指定id的日程,使用Promise异步回调。 885 886**系统能力**: SystemCapability.Applications.CalendarData 887 888**参数**: 889 890| 参数名 | 类型 | 必填 | 说明 | 891| ------ | ------ | ---- | -------- | 892| id | number | 是 | 日程id。 | 893 894**返回值**: 895 896| 类型 | 说明 | 897| -------------- | ------------------------- | 898| Promise\<void> | 无返回结果的Promise对象。 | 899 900**示例**: 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 939根据日程id,批量删除日程,使用callback异步回调。 940 941**系统能力**: SystemCapability.Applications.CalendarData 942 943**参数**: 944 945| 参数名 | 类型 | 必填 | 说明 | 946| -------- | -------------------- | ---- | ------------ | 947| ids | number[] | 是 | 日程id数组。 | 948| callback | AsyncCallback\<void> | 是 | 回调函数。 | 949 950**示例**: 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 1003根据日程id,批量删除日程,使用Promise异步回调。 1004 1005**系统能力**: SystemCapability.Applications.CalendarData 1006 1007**参数**: 1008 1009| 参数名 | 类型 | 必填 | 说明 | 1010| ------ | -------- | ---- | ------------ | 1011| ids | number[] | 是 | 日程id数组。 | 1012 1013**返回值**: 1014 1015| 类型 | 说明 | 1016| -------------- | ------------------------- | 1017| Promise\<void> | 无返回结果的Promise对象。 | 1018 1019**示例**: 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 1070更新日程,使用callback异步回调。 1071 1072**系统能力**: SystemCapability.Applications.CalendarData 1073 1074**参数**: 1075 1076| 参数名 | 类型 | 必填 | 说明 | 1077| -------- | -------------------- | ---- | ----------- | 1078| event | [Event](#event) | 是 | Event对象。 | 1079| callback | AsyncCallback\<void> | 是 | 回调函数。 | 1080 1081**示例**: 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 1124更新日程,使用Promise异步回调。 1125 1126**系统能力**: SystemCapability.Applications.CalendarData 1127 1128**参数**: 1129 1130| 参数名 | 类型 | 必填 | 说明 | 1131| ------ | --------------- | ---- | ----------- | 1132| event | [Event](#event) | 是 | Event对象。 | 1133 1134**返回值**: 1135 1136| 类型 | 说明 | 1137| -------------- | ------------------------- | 1138| Promise\<void> | 无返回结果的Promise对象。 | 1139 1140**示例**: 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 1181查询当前日历下所有日程,使用callback异步回调。 1182 1183**系统能力**: SystemCapability.Applications.CalendarData 1184 1185**参数**: 1186 1187| 参数名 | 类型 | 必填 | 说明 | 1188| -------- | -------------------------------- | ---- | --------------------------------- | 1189| callback | AsyncCallback<[Event](#event)[]> | 是 | 回调函数,返回的是Event对象数组。 | 1190 1191**示例**: 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 1219获取Calendar下符合查询条件的Event,使用callback异步回调。 1220 1221**系统能力**: SystemCapability.Applications.CalendarData 1222 1223**参数**: 1224 1225| 参数名 | 类型 | 必填 | 说明 | 1226| ----------- | -------------------------------- | ---- | --------------------------------- | 1227| eventFilter | [EventFilter](#eventfilter) | 是 | 查询条件。 | 1228| eventKey | (keyof [Event](#event))[] | 是 | 查询字段。 | 1229| callback | AsyncCallback<[Event](#event)[]> | 是 | 回调函数,返回的是Event对象数组。 | 1230 1231**示例**: 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 1283获取Calendar下符合查询条件的Event,使用Promise异步回调。 1284只有一个入参时,参数必须为查询条件,对应参数类型为EventFilter。 1285 1286**系统能力**: SystemCapability.Applications.CalendarData 1287 1288**参数**: 1289 1290| 参数名 | 类型 | 必填 | 说明 | 1291| ----------- | --------------------------- | ---- | ---------- | 1292| eventFilter | [EventFilter](#eventfilter) | 否 | 查询条件。 | 1293| eventKey | (keyof [Event](#event))[] | 否 | 查询字段。 | 1294 1295**返回值**: 1296 1297| 类型 | 说明 | 1298| -------------------------- | ----------------------------------- | 1299| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 | 1300 1301**示例**: 1302 1303```typescript 1304import { BusinessError } from '@kit.BasicServicesKit'; 1305import { calendarMgr } from '../entryability/EntryAbility'; 1306 1307let calendar : calendarManager.Calendar | undefined = undefined; 1308const date = new Date(); 1309const event: calendarManager.Event = { 1310 title: 'MyEvent', 1311 type: calendarManager.EventType.IMPORTANT, 1312 startTime: date.getTime(), 1313 endTime: date.getTime() + 60 * 60 * 1000 1314}; 1315calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1316 if (err) { 1317 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1318 } else { 1319 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1320 calendar = data; 1321 await calendar.addEvent(event).then((data: number) => { 1322 console.info(`Succeeded in adding event, id -> ${data}`); 1323 }).catch((err: BusinessError) => { 1324 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1325 }); 1326 // 根据MyEvent进行模糊查询,如果存在类似标题为MyEvent1类型的日程,也可查询出来 1327 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1328 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1329 console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}`); 1330 }).catch((err: BusinessError) => { 1331 console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`); 1332 }); 1333 } 1334}); 1335``` 1336 1337### getConfig 1338 1339getConfig(): CalendarConfig 1340 1341获取日历配置信息。 1342 1343**系统能力**: SystemCapability.Applications.CalendarData 1344 1345**返回值**: 1346 1347| 类型 | 说明 | 1348| --------------------------------- | -------------- | 1349| [CalendarConfig](#calendarconfig) | 日历配置信息。 | 1350 1351**示例**: 1352 1353```typescript 1354import { calendarMgr } from '../entryability/EntryAbility'; 1355import { BusinessError } from '@kit.BasicServicesKit'; 1356 1357let calendar : calendarManager.Calendar | undefined = undefined; 1358calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1359 if (err) { 1360 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1361 } else { 1362 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1363 calendar = data; 1364 const config = calendar.getConfig(); 1365 console.info("Succeeded in getting config"); 1366 } 1367}); 1368``` 1369 1370### setConfig 1371 1372setConfig(config: CalendarConfig, callback: AsyncCallback\<void>): void 1373 1374设置日历配置信息,使用callback异步回调。 1375 1376**系统能力**: SystemCapability.Applications.CalendarData 1377 1378**参数**: 1379 1380| 参数名 | 类型 | 必填 | 说明 | 1381| -------- | --------------------------------- | ---- | -------------- | 1382| config | [CalendarConfig](#calendarconfig) | 是 | 日历配置信息。 | 1383| callback | AsyncCallback\<void> | 是 | 回调函数。 | 1384 1385**示例**: 1386 1387```typescript 1388import { BusinessError } from '@kit.BasicServicesKit'; 1389import { calendarMgr } from '../entryability/EntryAbility'; 1390 1391let calendar : calendarManager.Calendar | undefined = undefined; 1392const config: calendarManager.CalendarConfig = { 1393 enableReminder: true, 1394 color: '#aabbcc' 1395}; 1396calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1397 if (err) { 1398 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1399 } else { 1400 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1401 calendar = data; 1402 calendar.setConfig(config, (err: BusinessError) => { 1403 if (err) { 1404 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1405 } else { 1406 console.info(`Succeeded in setting config, config -> ${JSON.stringify(config)}`); 1407 } 1408 }); 1409 } 1410}); 1411``` 1412 1413### setConfig 1414 1415setConfig(config: CalendarConfig): Promise\<void> 1416 1417设置日历配置信息,使用Promise异步回调。 1418 1419**系统能力**: SystemCapability.Applications.CalendarData 1420 1421**参数**: 1422 1423| 参数名 | 类型 | 必填 | 说明 | 1424| ------ | --------------------------------- | ---- | -------------- | 1425| config | [CalendarConfig](#calendarconfig) | 是 | 日历配置信息。 | 1426 1427**返回值**: 1428 1429| 类型 | 说明 | 1430| -------------- | ------------------------- | 1431| Promise\<void> | 无返回结果的Promise对象。 | 1432 1433**示例**: 1434 1435```typescript 1436import { BusinessError } from '@kit.BasicServicesKit'; 1437import { calendarMgr } from '../entryability/EntryAbility'; 1438 1439let calendar : calendarManager.Calendar | undefined = undefined; 1440const config: calendarManager.CalendarConfig = { 1441 enableReminder: true, 1442 color: '#aabbcc' 1443}; 1444calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1445 if (err) { 1446 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1447 } else { 1448 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1449 calendar = data; 1450 calendar.setConfig(config).then(() => { 1451 console.info(`Succeeded in setting config, data->${JSON.stringify(config)}`); 1452 }).catch((err: BusinessError) => { 1453 console.error(`Failed to set config. Code: ${err.code}, message: ${err.message}`); 1454 }); 1455 } 1456}); 1457``` 1458 1459### getAccount 1460 1461getAccount(): CalendarAccount 1462 1463获取日历账户信息。 1464 1465**系统能力**: SystemCapability.Applications.CalendarData 1466 1467**返回值**: 1468 1469| 类型 | 说明 | 1470| ----------------------------------- | -------------- | 1471| [CalendarAccount](#calendaraccount) | 日历账户信息。 | 1472 1473**示例**: 1474 1475```typescript 1476import { calendarMgr } from '../entryability/EntryAbility'; 1477import { BusinessError } from '@kit.BasicServicesKit'; 1478 1479let calendar : calendarManager.Calendar | undefined = undefined; 1480calendarMgr?.getCalendar((err: BusinessError, data:calendarManager.Calendar) => { 1481 if (err) { 1482 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1483 } else { 1484 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1485 calendar = data; 1486 const account = calendar.getAccount(); 1487 console.info(`succeeded in getting account, account -> ${JSON.stringify(account)}`); 1488 } 1489}); 1490``` 1491 1492### queryEventInstances<sup>18+</sup> 1493 1494**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1495 1496queryEventInstances(start: number, end: number, ids?: number[], eventKey?: (keyof Event)[]): Promise\<Event[]> 1497 1498获取Calendar下符合查询条件的日程实例,使用Promise异步回调。 1499 1500**系统能力**: SystemCapability.Applications.CalendarData 1501 1502**参数**: 1503 1504| 参数名 | 类型 | 必填 | 说明 | 1505| ----------- | --------------------------- |------|------------| 1506| start | number | 是 | 日程开始时间,类型为13位时间戳。 | 1507| end | number | 是 | 日程结束时间,类型为13位时间戳。 | 1508| ids | number[] | 否 | 需要查询的日程id数组,可为空数组或undefined,id>0。 | 1509| eventKey | (keyof [Event](#event))[] | 否 | 所有查询日程的字段。 | 1510 1511**返回值**: 1512 1513| 类型 | 说明 | 1514| -------------------------- | ----------------------------------- | 1515| Promise<[Event](#event)[]> | Promise对象,返回的是Event对象数组。 | 1516 1517**示例**: 1518 1519```typescript 1520import { BusinessError } from '@kit.BasicServicesKit'; 1521import { calendarMgr } from '../entryability/EntryAbility'; 1522 1523let calendar : calendarManager.Calendar | undefined = undefined; 1524const date = new Date(); 1525const event: calendarManager.Event = { 1526 title: 'MyEvent', 1527 type: calendarManager.EventType.IMPORTANT, 1528 startTime: date.getTime(), 1529 endTime: date.getTime() + 60 * 60 * 1000 1530}; 1531calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1532 if (err) { 1533 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1534 } else { 1535 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1536 calendar = data; 1537 await calendar.addEvent(event).then((data: number) => { 1538 console.info(`Succeeded in adding event, id -> ${data}`); 1539 }).catch((err: BusinessError) => { 1540 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1541 }); 1542 calendar?.queryEventInstances(date.getTime(), date.getTime() + 60 * 60 * 1000, undefined, 1543 ["title", "startTime", "endTime", "instanceStartTime", "instanceEndTime",]).then((data: calendarManager.Event[]) => { 1544 console.info(`Succeeded in getting event instances, data -> ${JSON.stringify(data)}`); 1545 }).catch((err: BusinessError) => { 1546 console.error(`Failed to get event instances. Code: ${err.code}, message: ${err.message}`); 1547 }); 1548 } 1549}); 1550``` 1551 1552## CalendarAccount 1553 1554日历账户信息。 1555 1556**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1557 1558**系统能力**:SystemCapability.Applications.CalendarData 1559 1560| 名称 | 类型 | 只读 | 可选 | 说明 | 1561| ----------- | ----------------------------- | ---- |----|----------------------------------| 1562| name | string | 是 | 否 | 账户名称(面向开发者)。 | 1563| type | [CalendarType](#calendartype) | 否 | 否 | 账户类型。 | 1564| displayName | string | 否 | 是 | 账户显示在日历应用上的名称(面向用户)。不填时,默认为空字符串。 | 1565 1566## CalendarConfig 1567 1568日历配置信息。 1569 1570**系统能力**:SystemCapability.Applications.CalendarData 1571 1572| 名称 | 类型 | 只读 | 可选 | 说明 | 1573| -------------- |--------|-------|----| ------------------------------------------------------------ | 1574| enableReminder | boolean | 否 | 是 | 是否打开Calendar下所有Event提醒能力。当取值为true时,该Calendar下所有Event具备提醒能力;当取值为false时,不具备提醒能力,默认具备提醒能力。 | 1575| color | number \| string | 否 | 是 | 设置Calendar颜色。不填时,默认值为'#0A59F7'。 | 1576 1577## Event 1578 1579日程对象,包含日程标题、开始时间、结束时间等信息。 1580 1581**系统能力**:SystemCapability.Applications.CalendarData 1582 1583| 名称 | 类型 | 只读 | 可选 | 说明 | 1584| -------------- | --------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1585| id | number | 否 | 是 | 日程id。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1586| type | [EventType](#eventtype) | 否 | 否 | 日程类型。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1587| title | string | 否 | 是 | 日程标题。不填时,默认为空字符串。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1588| location | [Location](#location) | 否 | 是 | 日程地点。不填时,默认为null。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1589| startTime | number | 否 | 否 | 日程开始时间,需要13位时间戳。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1590| endTime | number | 否 | 否 | 日程结束时间,需要13位时间戳。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1591| isAllDay | boolean | 否 | 是 | 是否为全天日程。当取值为true时,说明为全天日程;当取值为false时,说明不是全天日程,默认为非全天日程。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1592| attendee | [Attendee](#attendee)[] | 否 | 是 | 会议日程参与者。不填时,默认为null。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1593| timeZone | string | 否 | 是 | 日程时区。不填时,默认为当前所在时区,当需要创建与当前不一样的时区时,可填入对应的时区。可通过[getTimeZone()](../apis-basic-services-kit/js-apis-date-time.md#systemdatetimegettimezone)获取当前系统时区。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1594| reminderTime | number[] | 否 | 是 | 日程提醒时间,单位为分钟。填写x分钟,即距开始时间提前x分钟提醒,不填时,默认为不提醒。为负值时表示延期多长时间提醒。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1595| recurrenceRule | [RecurrenceRule](#recurrencerule) | 否 | 是 | 日程重复规则。不填时,默认为不重复。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1596| description | string | 否 | 是 | 日程描述。不填时,默认为空字符串。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1597| service | [EventService](#eventservice) | 否 | 是 | <!--RP1-->日程服务。不填时,默认没有一键服务。暂不支持此功能。<!--RP1End--> <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1598| identifier<sup>12+</sup> | string | 否 | 是 | 写入方可指定日程唯一标识。不填时,默认为null。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1599| isLunar<sup>12+</sup> | boolean | 否 | 是 | 是否为农历日程。当取值为true时,说明为农历日程;当取值为false时,说明不是农历日程,默认为非农历日程。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1600| instanceStartTime<sup>18+</sup> | number | 否 | 是 | 日程实例开始时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1601| instanceEndTime<sup>18+</sup> | number | 否 | 是 | 日程实例结束时间,需要13位时间戳。当调用[addEvent()](#addevent)、[addEvents()](#addevents)创建日程时,不填写此参数。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1602 1603## CalendarType 1604 1605账户类型枚举。 1606 1607**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1608 1609**系统能力**:SystemCapability.Applications.CalendarData 1610 1611| 名称 | 值 | 说明 | 1612| ---------- | ------------ | -------------------- | 1613| LOCAL | 'local' | 本地账户。 | 1614| EMAIL | 'email' | 邮箱账户。 | 1615| BIRTHDAY | 'birthday' | 生日账户。 | 1616| CALDAV | 'caldav' | 支持CalDAV协议账户。 | 1617| SUBSCRIBED | 'subscribed' | 订阅账户。 | 1618 1619## Location 1620 1621日程地点。 1622 1623**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1624 1625**系统能力**:SystemCapability.Applications.CalendarData 1626 1627| 名称 | 类型 | 只读 | 可选 | 说明 | 1628| --------- | ------ | ---- |----| ------------------------ | 1629| location | string | 否 | 是 | 地点位置。默认为空字符串。 | 1630| longitude | number | 否 | 是 | 地点经度。默认为0。 | 1631| latitude | number | 否 | 是 | 地点纬度。默认为0。 | 1632 1633## EventFilter 1634 1635日程过滤器,查询日程时进行筛选过滤,获取符合条件的日程。 1636 1637通过[filterById()](#filterbyid)、[filterByTime()](#filterbytime)、[filterByTitle()](#filterbytitle)任一方法获取日程过滤器,传入[getEvents()](#getevents)过滤。 1638 1639### filterById 1640 1641static filterById(ids: number[]): EventFilter 1642 1643根据日程id过滤日程。 1644 1645**系统能力**: SystemCapability.Applications.CalendarData 1646 1647**参数**: 1648 1649| 参数名 | 类型 | 必填 | 说明 | 1650| ------ | -------- | ---- | ------------ | 1651| ids | number[] | 是 | 日程id数组。 | 1652 1653**返回值**: 1654 1655| 类型 | 说明 | 1656| --------------------------- | -------------------- | 1657| [EventFilter](#eventfilter) | 返回日程过滤器对象。 | 1658 1659**示例**: 1660 1661```typescript 1662import { BusinessError } from '@kit.BasicServicesKit'; 1663import { calendarMgr } from '../entryability/EntryAbility'; 1664 1665let calendar : calendarManager.Calendar | undefined = undefined; 1666let id1: number = 0; 1667let id2: number = 0; 1668const date = new Date(); 1669const event1: calendarManager.Event = { 1670 type: calendarManager.EventType.NORMAL, 1671 startTime: date.getTime(), 1672 endTime: date.getTime() + 60 * 60 * 1000 1673}; 1674const event2: calendarManager.Event = { 1675 type: calendarManager.EventType.IMPORTANT, 1676 startTime: date.getTime(), 1677 endTime: date.getTime() + 60 * 60 * 1000 1678}; 1679calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1680 if (err) { 1681 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1682 } else { 1683 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1684 calendar = data; 1685 await calendar.addEvent(event1).then((data: number) => { 1686 console.info(`Succeeded in adding event, id -> ${data}`); 1687 id1 = data; 1688 }).catch((err: BusinessError) => { 1689 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1690 }); 1691 await calendar.addEvent(event2).then((data: number) => { 1692 console.info(`Succeeded in adding event, id -> ${data}`); 1693 id2 = data; 1694 }).catch((err: BusinessError) => { 1695 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1696 }); 1697 const filter = calendarManager.EventFilter.filterById([id1, id2]); 1698 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1699 console.info(`Succeeded in getting events filter by id, data -> ${JSON.stringify(data)}`); 1700 }).catch((err: BusinessError) => { 1701 console.error(`Failed to filter by id. Code: ${err.code}, message: ${err.message}`); 1702 }); 1703 } 1704}); 1705``` 1706 1707### filterByTime 1708 1709static filterByTime(start: number, end: number): EventFilter 1710 1711根据日程时间过滤日程。 1712 1713**系统能力**: SystemCapability.Applications.CalendarData 1714 1715**参数**: 1716 1717| 参数名 | 类型 | 必填 | 说明 | 1718| ------ | ------ | ---- | ---------- | 1719| start | number | 是 | 开始时间。 | 1720| end | number | 是 | 结束时间。 | 1721 1722**返回值**: 1723 1724| 类型 | 说明 | 1725| --------------------------- | -------------------- | 1726| [EventFilter](#eventfilter) | 返回日程过滤器对象。 | 1727 1728**示例**: 1729 1730```typescript 1731import { BusinessError } from '@kit.BasicServicesKit'; 1732import { calendarMgr } from '../entryability/EntryAbility'; 1733 1734let calendar : calendarManager.Calendar | undefined = undefined; 1735const event1: calendarManager.Event = { 1736 type: calendarManager.EventType.NORMAL, 1737 startTime: 1686931200000, 1738 endTime: 1687017600000 1739}; 1740const event2: calendarManager.Event = { 1741 type: calendarManager.EventType.IMPORTANT, 1742 startTime: 1686931200000, 1743 endTime: 1687017600000 1744}; 1745calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1746 if (err) { 1747 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1748 } else { 1749 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1750 calendar = data; 1751 await calendar.addEvent(event1).then((data: number) => { 1752 console.info(`Succeeded in adding event, id -> ${data}`); 1753 }).catch((err: BusinessError) => { 1754 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1755 }); 1756 await calendar.addEvent(event2).then((data: number) => { 1757 console.info(`Succeeded in adding event, id -> ${data}`); 1758 }).catch((err: BusinessError) => { 1759 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1760 }); 1761 const filter = calendarManager.EventFilter.filterByTime(1686931200000, 1687017600000); 1762 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1763 console.info(`Succeeded in getting events filter by time, data -> ${JSON.stringify(data)}`); 1764 }).catch((err: BusinessError) => { 1765 console.error(`Failed to filter by time. Code: ${err.code}, message: ${err.message}`); 1766 }); 1767 } 1768}); 1769``` 1770 1771### filterByTitle 1772 1773static filterByTitle(title: string): EventFilter 1774 1775根据日程标题过滤日程,该条件为模糊匹配。 1776 1777**系统能力**: SystemCapability.Applications.CalendarData 1778 1779**参数**: 1780 1781| 参数名 | 类型 | 必填 | 说明 | 1782| ------ | ------ | ---- | ---------- | 1783| title | string | 是 | 日程标题。 | 1784 1785**返回值**: 1786 1787| 类型 | 说明 | 1788| --------------------------- | -------------------- | 1789| [EventFilter](#eventfilter) | 返回日程过滤器对象。 | 1790 1791**示例**: 1792 1793```typescript 1794import { BusinessError } from '@kit.BasicServicesKit'; 1795import { calendarMgr } from '../entryability/EntryAbility'; 1796 1797let calendar : calendarManager.Calendar | undefined = undefined; 1798const event: calendarManager.Event = { 1799 title: 'MyEvent', 1800 type: calendarManager.EventType.NORMAL, 1801 startTime: 1686931200000, 1802 endTime: 1687017600000 1803}; 1804calendarMgr?.getCalendar(async (err: BusinessError, data:calendarManager.Calendar) => { 1805 if (err) { 1806 console.error(`Failed to get calendar. Code: ${err.code}, message: ${err.message}`); 1807 } else { 1808 console.info(`Succeeded in getting calendar, data -> ${JSON.stringify(data)}`); 1809 calendar = data; 1810 await calendar.addEvent(event).then((data: number) => { 1811 console.info(`Succeeded in adding event, id -> ${data}`); 1812 }).catch((err: BusinessError) => { 1813 console.error(`Failed to add event. Code: ${err.code}, message: ${err.message}`); 1814 }); 1815 const filter = calendarManager.EventFilter.filterByTitle('MyEvent'); 1816 calendar.getEvents(filter).then((data: calendarManager.Event[]) => { 1817 console.info(`Succeeded in getting events filter by title, data -> ${JSON.stringify(data)}`); 1818 }).catch((err: BusinessError) => { 1819 console.error(`Failed to filter by title. Code: ${err.code}, message: ${err.message}`); 1820 }); 1821 } 1822}); 1823``` 1824 1825## EventType 1826 1827日程类型枚举。 1828 1829**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1830 1831**系统能力**:SystemCapability.Applications.CalendarData 1832 1833| 名称 | 值 | 说明 | 1834| --------- | ---- |-------------------------| 1835| NORMAL | 0 | 普通日程,例如会议,闹钟等日常提醒的日程。 | 1836| IMPORTANT | 1 | 重要日程,例如结婚纪念日等具有重要意义的日期,不推荐三方开发者使用,重要日程类型不支持一键服务跳转功能及无法自定义提醒时间。 | 1837 1838## RecurrenceRule 1839 1840日程重复规则。 1841 1842**系统能力**:SystemCapability.Applications.CalendarData 1843 1844| 名称 | 类型 | 只读 | 可选 | 说明 | 1845| ------------------- | ------------------------------------------- | ---- |----|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1846| recurrenceFrequency | [RecurrenceFrequency](#recurrencefrequency) | 否 | 否 | 日程重复规则类型。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1847| expire | number | 否 | 是 | 重复周期截止日。不填时,默认为0。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1848| count<sup>12+</sup> | number | 否 | 是 | 重复日程的重复次数,取值为非负整数,不填时默认为0,表示不会限定重复次数,会一直重复,取值为负时,效果等同于取值为0。当count与expire同时存在时以count为准。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1849| interval<sup>12+</sup> | number | 否 | 是 | 重复日程的重复间隔,取值为非负整数,不填时默认为0,表示日程按照重复规则一直重复,没有间隔。取值为负时,效果等同于取值为0。当interval与expire同时存在时以expire为准。 <br/>此属性与recurrenceFrequency重复规则相关,不同的重复规则下,表示的重复间隔不同,以interval取2为例,分为以下几种情况:<br/>每天重复时:表示日程每隔两天重复一次。<br/>每周重复时:表示日程每隔两周重复一次。<br/>每月重复时:表示日程每隔两月重复一次。<br/>每年重复时:表示日程每隔两年重复一次。<br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1850| excludedDates<sup>12+</sup> | number[] | 否 | 是 | 重复日程的排除日期,参数取值为时间戳格式,不填时,默认为空,表示没有排除的日期,0或负数为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1851| daysOfWeek<sup>12+</sup> | number[] | 否 | 是 | 按照一周第几天重复。不填时,默认为空,表示没有一周第几天重复的规则。范围为1到7,对应周一到周日,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1852| daysOfMonth<sup>12+</sup> | number[] | 否 | 是 | 按照一个月第几天重复。不填时,默认为空,表示没有一个月第几天重复的规则。范围为1到31,1到31对应1到31号,其他值为无效值,与空值效果相同。若当月没有31号,31也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1853| daysOfYear<sup>12+</sup> | number[] | 否 | 是 | 按照一年第几天重复。不填时,默认为空,表示没有一年第几天重复的规则。范围为1到366,1到366表示一年的1到366天,其他值为无效值,与空值效果相同。若当年没有366天,366也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1854| weeksOfMonth<sup>12+</sup> | number[] | 否 | 是 | 按照一个月第几周重复。不填时,默认为空,表示没有一个月第几周重复的规则。范围为1到5,1到5为每月的第1到第5周,其他值为无效值,与空值效果相同。若当月没有第五周,5也为无效值。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1855| weeksOfYear<sup>12+</sup> | number[] | 否 | 是 | 按照一年中第几周重复。不填时,默认为空,表示没有一年第几周重复的规则。范围为1到53,1到53为每年的第1到第53周,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1856| monthsOfYear<sup>12+</sup> | number[] | 否 | 是 | 按照一年中第几个月重复。不填时,默认为空,表示没有一年第几个月重复的规则。范围为1到12,1到12为每年的1到12月,其他值为无效值,与空值效果相同。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1857## RecurrenceFrequency 1858 1859日程重复规则类型枚举。 1860 1861**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1862 1863**系统能力**:SystemCapability.Applications.CalendarData 1864 1865| 名称 | 值 | 说明 | 1866| ------- | ---- | ---------- | 1867| YEARLY | 0 | 每年重复。 | 1868| MONTHLY | 1 | 每月重复。 | 1869| WEEKLY | 2 | 每周重复。 | 1870| DAILY | 3 | 每天重复。 | 1871 1872## Attendee 1873 1874会议日程参与者。 1875 1876**系统能力**:SystemCapability.Applications.CalendarData 1877 1878| 名称 | 类型 | 只读 | 可选 | 说明 | 1879| ----- | ------ | ---- |----|--------------------------------------------------------------------| 1880| name | string | 否 | 否 | 会议日程参与者的姓名。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1881| email | string | 否 | 否 | 会议日程参与者的邮箱。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 1882| role<sup>12+</sup> | [AttendeeRole](#attendeerole12) | 否 | 是 | 会议日程参与者的角色。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 | 1883| status<sup>18+</sup> | [AttendeeStatus](#attendeestatus18) | 否 | 是 | 会议日程参与者的状态,不填时默认为空。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1884| type<sup>18+</sup> | [AttendeeType](#attendeetype18) | 否 | 是 | 会议日程参与者的类型,不填时默认为空。 <br/>**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 | 1885 1886## EventService 1887 1888日程服务。 1889 1890**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1891 1892**系统能力**:SystemCapability.Applications.CalendarData 1893 1894| 名称 | 类型 | 只读 | 可选 | 说明 | 1895| ----------- | --------------------------- | ---- |----|-------------------------------------| 1896| type | [ServiceType](#servicetype) | 否 | 否 | 服务类型。 | 1897| uri | string | 否 | 否 | 服务的uri,格式为Deeplink类型。可以跳转到三方应用相应界面。 | 1898| description | string | 否 | 是 | 服务辅助描述。不填时,默认为空字符串。 | 1899 1900## ServiceType 1901 1902日程服务类型枚举。 1903 1904**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 1905 1906**系统能力**:SystemCapability.Applications.CalendarData 1907 1908| 名称 | 值 | 说明 | 1909| --------------- | ---------------- | ------------ | 1910| MEETING | 'Meeting' | 一键入会。 | 1911| WATCHING | 'Watching' | 一键追剧。 | 1912| REPAYMENT | 'Repayment' | 一键还款。 | 1913| LIVE | 'Live' | 一键直播。 | 1914| SHOPPING | 'Shopping' | 一键购物。 | 1915| TRIP | 'Trip' | 一键查看。 | 1916| CLASS | 'Class' | 一键上课。 | 1917| SPORTS_EVENTS | 'SportsEvents' | 一键看赛事。 | 1918| SPORTS_EXERCISE | 'SportsExercise' | 一键运动。 | 1919 1920## AttendeeRole<sup>12+</sup> 1921 1922会议日程参与者角色类型枚举。 1923 1924**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 1925 1926**系统能力**:SystemCapability.Applications.CalendarData 1927 1928| 名称 | 值 | 说明 | 1929|--------------|---------------|--------| 1930| ORGANIZER | 'organizer' | 会议组织者。 | 1931| PARTICIPANT | 'participant' | 会议参与者。 | 1932 1933## AttendeeStatus<sup>18+</sup> 1934 1935会议日程参与者状态类型枚举。 1936 1937**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1938 1939**系统能力**:SystemCapability.Applications.CalendarData 1940 1941| 名称 | 值 | 说明 | 1942|----------------------------|-----|----------| 1943| UNKNOWN | 0 | 参与者状态未知。 | 1944| TENTATIVE | 1 | 参与者状态暂定。 | 1945| ACCEPTED | 2 | 参与者已接受。 | 1946| DECLINED | 3 | 参与者已拒绝。 | 1947| UNRESPONSIVE | 4 | 参与者未响应。 | 1948 1949## AttendeeType<sup>18+</sup> 1950 1951会议日程参与者受邀类型枚举。 1952 1953**原子化服务API:** 从API version 18开始,该接口支持在原子化服务中使用。 1954 1955**系统能力**:SystemCapability.Applications.CalendarData 1956 1957| 名称 | 值 | 说明 | 1958|------------------------|-----|--------------------| 1959| REQUIRED | 1 | 会议日程主送者。 | 1960| OPTIONAL | 2 | 会议日程抄送者。 | 1961| RESOURCE | 3 | 会议中使用的资源(电视或投影仪等)。 | 1962