官方地址: @ohos.calendarManager(日程管理) (openharmony.cn)
本模块提供日历与日程管理能力,包括日历和日程的创建、删除、修改、查询等。日历管理器CalendarManager用于管理日历Calendar。日历Calendar主要包含帐户信息CalendarAccount和配置信息CalendarConfig。日历Calendar与日程Event属于一对多关系,一个Calendar可以有多个Event,一个Event只属于一个Calendar。
注意需配置权限:
{ "name": "ohos.permission.READ_CALENDAR", "reason": '$string:permission_reason_calendar', "usedScene": {} }, { "name": "ohos.permission.WRITE_CALENDAR", "reason": '$string:permission_reason_calendar', "usedScene": {} },
第一步:获取默认Calendar对象
// 默认日历
static DefaultCalender = calendarManager.getCalendarManager(getContext()).getCalendar()
第二:封装日程管理类
import { calendarManager } from '@kit.CalendarKit'
import { promptAction } from '@kit.ArkUI'
import { PermissionManager } from '.'
import { Permissions } from '@kit.AbilityKit'
// 日历权限 "ohos.permission.READ_CALENDAR", "ohos.permission.WRITE_CALENDAR"
// 日历管理类
export class UserCalendarManager {
// 默认日历
static DefaultCalender = calendarManager.getCalendarManager(getContext()).getCalendar()
// 日历权限
static permissions: Permissions[] = ["ohos.permission.READ_CALENDAR", "ohos.permission.WRITE_CALENDAR"]
// 获取日历权限
static async RequestCalendarPermissions(permissions?: Permissions[]) {
try {
// 申请权限
await PermissionManager.requestPermissions(UserCalendarManager.permissions)
} catch {
// 未开启弹窗提示
const dialogRes = await promptAction.showDialog({
alignment: DialogAlignment.Center,
title: '温馨提示',
message: '手机瘦身功能需要获取权限,请在系统设置中打开相册开关',
buttons: [
{ text: '取消', color: $r('app.color.font_sub') },
{ text: '立即开启', color: $r('app.color.brand') }
]
})
// 打开设置页
if (dialogRes.index === 1) {
PermissionManager.openPermissionSettingsPage()
}
}
}
// 新增日程(根据传入的event判断是普通日程还是重要日程)
static async addEvent(event: calendarManager.Event, type: calendarManager.EventType) {
// 获取默认日程对象
const DefaultCalender = await UserCalendarManager.DefaultCalender
// 添加日程
try {
const normalId = await DefaultCalender.addEvent(event) //❤️addEvent的返回值是当前id
promptAction.showToast({ message: `添加${type === 0 ? '重要' : '普通'}日程成功` + normalId })
} catch (e) {
promptAction.showToast({ message: `添加${type === 0 ? '重要' : '普通'}日程失败` + e })
}
}
// 获取所有日程信息
static async getAllEventInfo() {
// 获取默认日程对象
const DefaultCalender = await UserCalendarManager.DefaultCalender
// 查询所有日程信息
let AllCalendarInfo = await DefaultCalender.getEvents() //❤️getEvents的返回值是event对象
return AllCalendarInfo
}
// 根据标题搜索日程
static async searchEvents(title: string) {
const calendar = await UserCalendarManager.DefaultCalender
const filter = calendarManager.EventFilter.filterByTitle(title)
return calendar.getEvents(filter) //❤️getEvents的返回值是event对象
}
// 获取过期日程
// 根据EventFilter,日程过滤器,查询日程时进行筛选过滤,获取符合条件的日程。
// 通过filterById()、filterByTime()、filterByTitle()任一方法获取日程过滤器,传入getEvents()过滤。)
static async getOverdueEvents() {
const calendar = await UserCalendarManager.DefaultCalender
// 添加查询条件能查询全部,0 ~ Date.now 查询所有过期日程
const filter = calendarManager.EventFilter.filterByTime(0, Date.now())
return calendar.getEvents(filter) //返回值是event对象
}
// 查询诈骗日程(根据查询字段进行判断)
static async getFraudEvents() {
const calendar = await UserCalendarManager.DefaultCalender
const events = await calendar.getEvents()
return events.filter(v => {
return /中奖|领取|http:/.test(v.title!) || /中奖|领取|http:/.test(v.description!)
})
}
// 删除单个日程
static async deleteEvent(id: number) {
const calendar = await UserCalendarManager.DefaultCalender
return calendar.deleteEvent(id)
}
// 批量删除日程
static async deleteEvents(ids: number[]) {
const calendar = await UserCalendarManager.DefaultCalender
return calendar.deleteEvents(ids)
}
}