【HarmonyOS Next开发】Calendar Kit日历管理

2024-12-24 23:06:32
8次阅读
0个评论

 简介

Calendar Kit提供日历与日程管理能力,包括日历的获取和日程的创建能力。

cke_232.png

Calendar Kit为用户提供了一系列接口来获取日历账户,并使用特定的接口向日历账户中写入日程。

如果写入的日程带有提醒时间则系统会在时间到达时向用户发送提醒。

约束点

  • 需要用户手动授权获取读取、写入日历日程的权限。
  • 仅支持stage模型。
  • 从api11开始支持

相关知识

配置需要的权限

在module.json5中配置所需申请的权限

"requestPermissions": [
  {
    "name": "ohos.permission.READ_CALENDAR",
  },
  {
    "name": "ohos.permission.WRITE_CALENDAR"
  }
]

在EntryAbility中配置权限和日历管理器

 EntryAbility中检查用户是否确认权限:

import {
  abilityAccessCtrl,
  AbilityConstant,
  common,
  PermissionRequestResult,
  Permissions,
  UIAbility,
  Want
} from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
import { calendarManager } from '@kit.CalendarKit';
import { BusinessError } from '@kit.BasicServicesKit';

/**
 * 日志管理器全局对象
 */
export let calendarMgr: calendarManager.CalendarManager | null = null;

export let mContext: common.UIAbilityContext | null = null;

export default class EntryAbility extends UIAbility {
    onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    windowStage.loadContent('pages/Index', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });
    //检测用户是否授权日历权限
    mContext = this.context;
    const permissions: Permissions[] = ['ohos.permission.READ_CALENDAR', 'ohos.permission.WRITE_CALENDAR'];
    let atManager = abilityAccessCtrl.createAtManager();
    atManager.requestPermissionsFromUser(mContext, permissions).then((result: PermissionRequestResult) => {
      //给日历管理器赋值
      calendarMgr = calendarManager.getCalendarManager(mContext);
    }).catch((error: BusinessError) => {
      console.error(`get Permission error, error: ${JSON.stringify(error)}`);
    })
  }
}

日历管理器(CalendarManager)

提供了添加、删除、获取日历账户的相关方法。如果不需要关注日程(Event)的账户(Calendar)归属时,可以直接使用getCalendar方法直接获取。

相关方法如下:

  • createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback): void
  • createCalendar(calendarAccount: CalendarAccount): Promise
  • deleteCalendar(calendar: Calendar, callback: AsyncCallback): void
  • deleteCalendar(calendar: Calendar): Promise
  • getCalendar(callback: AsyncCallback): void
  • getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback): void
  • getCalendar(calendarAccount?: CalendarAccount): Promise
  • getAllCalendars(callback: AsyncCallback<Calendar[]>): void
  • getAllCalendars(): Promise<Calendar[]>

日历账户(Calendar)

可以对账户中的日程进行创建、删除、修改、查询等操作,还有日历配置信息、日历账户信息等方法

日程(Event)

td {white-space:nowrap;border:1px solid #dee0e3;font-size:10pt;font-style:normal;font-weight:normal;vertical-align:middle;word-break:normal;word-wrap:normal;}

| | | | | | | -------------- | -------------------------------------------------------------------------------------------------------------------------------- | -- | -- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 名称 | 类型 | 只读 | 必填 | 说明 | | id | number | 否 | 否 | 日程id。当调用addEvent()addEvents()创建日程时,不填写此参数。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | type | EventType | 否 | 是 | 日程类型。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | title | string | 否 | 否 | 日程标题。不填时,默认为空字符串。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | location | Location | 否 | 否 | 日程地点。不填时,默认为null。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | startTime | number | 否 | 是 | 日程开始时间,需要13位时间戳。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | endTime | number | 否 | 是 | 日程结束时间,需要13位时间戳。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | isAllDay | boolean | 否 | 否 | 是否为全天日程。当取值为true时,说明为全天日程;当取值为false时,说明不是全天日程,默认为非全天日程。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | attendee | Attendee[] | 否 | 否 | 日程参与者。不填时,默认为null。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | timeZone | string | 否 | 否 | 日程时区。不填时,默认为当前所在时区,当需要创建与当前不一样的时区时,可填入对应的时区。可通过getTimeZone()获取当前系统时区。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | reminderTime | number[] | 否 | 否 | 日程提醒时间,单位为分钟。填写x分钟,即距开始时间提前x分钟提醒,不填时,默认为不提醒。可为负值。 | | recurrenceRule | RecurrenceRule | 否 | 否 | 日程重复规则。不填时,默认为不重复。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | description | string | 否 | 否 | 日程描述。不填时,默认为空字符串。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | service | EventService | 否 | 否 | 日程服务。不填时,默认没有一键服务。元服务API: 从API version 11开始,该接口支持在元服务中使用。 | | identifier12+ | string | 否 | 否 | 写入方可指定日程唯一标识。不填时,默认为null。该字段暂不支持。元服务API: 从API version 12开始,该接口支持在元服务中使用。 |

收藏00

登录 后评论。没有帐号? 注册 一个。