HarmonyOS 日历添加之后,再次获取缺少identifier字段?

let event: calendarManager.Event = {
  type: calendarManager.EventType.NORMAL,
  title: this.greatEventInfo.eventType,
  description: this.greatEventInfo.calendarContent,
  identifier: this.greatEventInfo.eventId.toString(),
  startTime: new Date(date + " 09:00:00").getTime(),
  endTime: new Date(date + " 09:05:00").getTime()
}
let result = await CalendarEventManager.sharedInstance.addCalendarEvent(event)
this.hasCalendarEvent = result
if (result) {
  showTextToast.showToast("添加日历提醒成功")
} else {
  showTextToast.showToast("添加日历提醒失败")
}

添加了日历事件,并且给唯一标识符赋值了,提示添加成功,再次获取这些事件的时候,发现Event返回的数据中没有identifier导致无法判断这个日历是否已经创建过。

获取日历事件的代码:

async hasCalendarEvent(eventId: number): Promise<boolean> {
  let check = await this.checkPermissions();
  if (!check) {
  return false;
}
let result = await this.calendarMgr.getCalendar(this.calendarAccount).then(async (calendar: calendarManager.Calendar) => {
  XFLog.d(this.TAG,`Succeeded getCalendar -> ${JSON.stringify(calendar)}`);
  return await calendar.getEvents().then((data: calendarManager.Event[]) => {
    XFLog.d(this.TAG,`Succeeded getEvents -> ${JSON.stringify(data)}`);
    if (data && data.length > 0) {
      for (const event of data) {
        if (event.identifier === eventId.toString()) {
          return true;
        }
      }
    }
    return false;
  }).catch((err: BusinessError) => {
    XFLog.d(this.TAG,`Failed to getEvents. Code: ${err.code}, message: ${err.message}`);
    return false;
  })
}).catch((err: BusinessError) => {
  XFLog.d(this.TAG,`Failed to getEvents. Code: ${err.code}, message: ${err.message}`);
  return false;
})
return result;
}
阅读 572
1 个回答

要筛选想要查找的信息,设置过滤条件:

const filter = calendarManager.EventFilter.filterByTitle('日历测试');
calendarMgr?.getCalendar().then((data: calendarManager.Calendar) => {
  data.getEvents(filter,
    ['id', 'title', 'type', 'startTime', 'endTime', 'location', 'isAllDay', 'reminderTime', 'description',
      'recurrenceRule', 'identifier', 'isLunar']).then((data: calendarManager.Event[]) => {
    console.info(`Succeeded in getting events, data -> ${JSON.stringify(data)}` + ' ' + data[0]);
    console.info(` data -> ` + ' ' + data[0].id);
  }).catch((err: BusinessError) => {
    console.error(`Failed to get events. Code: ${err.code}, message: ${err.message}`);
  });
})

参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-calendarmanager-V5\#getevents-1

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进