前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >鸿蒙开发:Calendar Kit日历管理

鸿蒙开发:Calendar Kit日历管理

原创
作者头像
钟子翔
发布2024-12-24 16:46:20
发布2024-12-24 16:46:20
11300
代码可运行
举报
文章被收录于专栏:HarmonyOSNext
运行总次数:0
代码可运行

简介

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

cke_232.png
cke_232.png

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

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

约束点

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

相关知识

配置需要的权限

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

代码语言:javascript
代码运行次数:0
复制
"requestPermissions": [
  {
    "name": "ohos.permission.READ_CALENDAR",
  },
  {
    "name": "ohos.permission.WRITE_CALENDAR"
  }
]

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

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

代码语言:javascript
代码运行次数:0
复制
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<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)

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开始,该接口支持在元服务中使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 约束点
  • 相关知识
    • 配置需要的权限
    • 在EntryAbility中配置权限和日历管理器
    • 日历管理器(CalendarManager)
    • 日历账户(Calendar)
    • 日程(Event)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档