鸿蒙OS之@ohos.calendarManager (日程管理能力)

官方地址: @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)
  }
}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值