【HarmonyOS学习】Calendar Kit日历管理

简介

Calendar Kit提供日历与日程管理能力,包括日历的获取和日程的创建能力。
在这里插入图片描述
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)

在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 20:36:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 20:36:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 20:36:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 20:36:01       69 阅读

热门阅读

  1. Three.js常见的贴图类型及其用途

    2024-07-17 20:36:01       21 阅读
  2. MySQL 事务

    2024-07-17 20:36:01       21 阅读
  3. 力扣刷题之2956.找到两个数组中的公共元素

    2024-07-17 20:36:01       20 阅读
  4. 前端面试题日常练-day94 【Less】

    2024-07-17 20:36:01       22 阅读
  5. Linux第一章课后作业

    2024-07-17 20:36:01       25 阅读
  6. 免费服务器和付费服务器哪个更好?

    2024-07-17 20:36:01       23 阅读