【HarmonyOS Next】Calendar Kit日历管理 原创

奥尼5354
发布于 2025-3-10 22:20
浏览
0收藏

简介

Calendar Kit提供日历与日程管理能力,包括日历的获取和日程的创建能力。
【HarmonyOS Next】Calendar Kit日历管理-鸿蒙开发者社区
Calendar Kit为用户提供了一系列接口来获取日历账户,并使用特定的接口向日历账户中写入日程。

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

约束点

  • 需要用户手动授权获取读取、写入日历日程的权限。

  • 仅支持stage模型。

  • 从api11开始支持

相关知识

配置需要的权限

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

"requestPermissions": [
  {
    "name": "ohos.permission.READ_CALENDAR",
  },
  {
    "name": "ohos.permission.WRITE_CALENDAR"
  }
]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

在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)}`);
    })
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.

日历管理器(CalendarManager)

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

相关方法如下:

  • createCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback<Calendar>): void

  • createCalendar(calendarAccount: CalendarAccount): Promise<Calendar>

  • deleteCalendar(calendar: Calendar, callback: AsyncCallback<void>): void

  • deleteCalendar(calendar: Calendar): Promise<void>

  • getCalendar(callback: AsyncCallback<Calendar>): void

  • getCalendar(calendarAccount: CalendarAccount, callback: AsyncCallback<Calendar>): void

  • getCalendar(calendarAccount?: CalendarAccount): Promise<Calendar>

  • getAllCalendars(callback: AsyncCallback<Calendar[]>): void

  • getAllCalendars(): Promise<Calendar[]>

日历账户(Calendar)

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

日程(Event)

【HarmonyOS Next】Calendar Kit日历管理-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐