Skip to content

x-addphonerepeatcalendar-s 系统日历

向系统日历添加单次或重复事件。参数与回调对齐微信 wx.addPhoneCalendar / wx.addPhoneRepeatCalendar 和 DCloud success / fail / complete

对外方法名为 xAddPhoneCalendarxAddPhoneRepeatCalendar,类型统一加 X 前缀,避免和官方 addPhoneCalendar 同名冲突。

有日历权限时直接写入系统日历;无权限时打开系统新建日程页,用户取消返回 609

兼容性

HarmonyiOSAndroidWEB微信小程序
支持支持支持不支持支持

调用

ts
import {
  xAddPhoneCalendar,
  xAddPhoneRepeatCalendar,
  XAddPhoneCalendarOptions,
  XAddPhoneRepeatCalendarOptions
} from "@/uni_modules/x-addphonerepeatcalendar-s"

xAddPhoneCalendar({
  title: "项目评审",
  startTime: Math.floor(Date.now() / 1000),
  notes: "带上原型稿",
  location: "会议室 A",
  success: (res) => {
    console.log(res.errMsg)
  },
  fail: (err) => {
    console.log(err.errCode, err.errMsg)
  }
} as XAddPhoneCalendarOptions)

xAddPhoneRepeatCalendar({
  title: "健身打卡",
  startTime: Math.floor(Date.now() / 1000),
  repeatInterval: "week",
  repeatEndTime: Math.floor(Date.now() / 1000) + 30 * 24 * 60 * 60
} as XAddPhoneRepeatCalendarOptions)

方法

名称说明
xAddPhoneCalendar添加单次日历事件
xAddPhoneRepeatCalendar添加重复日历事件

参数

XAddPhoneCalendarOptions / XAddPhoneRepeatCalendarOptions

字段说明默认
title标题必填
startTime开始时间 unix 时间戳(秒)。大于 1e11 时按毫秒换算必填
allDay是否全天false
notes事件说明。微信端映射为 description
location地点
endTime结束时间 unix 时间戳(秒)同开始时间
path小程序路径,仅微信;会拼到说明
signature路径签名,仅微信
repeatInterval仅重复 API:day / week / month / yearmonth
repeatEndTime仅重复 API:重复截止时间戳(秒)一直重复
success成功-
fail失败-
complete结束,成功带结果,失败为 null-

每月重复时,开始日期不能大于 28 日。

错误码

含义
601标题为空
602开始时间无效
603结束时间无效或早于开始时间
606重复规则无效
607日历服务不可用
608写入日历失败
609用户取消了系统日历创建
1001系统错误,或正在添加日历事件
1008当前平台不支持(Web)

平台差异

  1. 微信走官方 wx.addPhoneCalendar / wx.addPhoneRepeatCalendar,需用户点击触发,并授权 scope.addPhoneCalendar
  2. Android 申请 READ_CALENDAR / WRITE_CALENDAR 后直接写入 CalendarContract。没有可写日历时先创建本地日历。仅用户拒绝权限时才打开系统新建页。
  3. iOS 使用 EventKit;iOS 17+ 优先写权限。只写权限下列不出真实日历时,改为打开系统 EKEventEditViewController,不再返回 607。无权限时同样打开系统新建日程页。
  4. HarmonyOS 使用 Calendar Kit。有权限后直接 addEvent;没有本地日历时先 createCalendar。仅用户拒绝权限时走 editEvent
  5. 不写入系统「闹钟提醒」。Android 官方只处理 METHOD_ALERT 通知,METHOD_ALARM 设备不响;国产日历的闹钟开关没有公开 extra。iOS 日历没有对等的闹钟项。
  6. Web 返回 1008

版本

版权归 https://xui.tmui.design 你不得修改及二次开发,仅供 TMUI4 会员商用使用。不得转给非 VIP 会员使用,一经查实数倍赔偿,并追究法律责任。

更新日志

1.0.5(2026-08-17)

  • HarmonyOS index.utscatch 不再标注类型,避免编成 .ets 后 hvigor 报 arkts-no-types-in-catch
  • 日历权限文案改为插件专属资源名,避免和宿主、其它模块冲突

1.0.4(2026-08-17)

  • 去掉 alarm / alarmOffset。Android 官方设备只处理通知提醒,国产日历「闹钟提醒」没有可写 extra;iOS 日历没有对等闹钟项

1.0.3(2026-08-17)

  • HarmonyOS 对齐 Android/iOS:授权后直接写入,没有日历时创建本地日历并开启 enableReminder,不再因写入失败跳系统编辑页
  • 明确 alarm / alarmOffset 写入系统日历闹钟;鸿蒙日历需先打开提醒开关才会响

1.0.2(2026-08-17)

  • 修复 Android 申请日历权限时 The requested permission cannot be empty,以及授权后因没有可写日历跳到系统新建页、返回后 pending 未清理导致第二次卡在「正在添加日历事件」
  • Android 有权限后直接写入;没有可写日历时先创建本地日历。重复事件改为 DURATION + RRULE,不再同时写 DTEND

1.0.1(2026-08-17)

  • 修复 iOS 17+ 只写日历权限下 defaultCalendarForNewEvents 为空直接返回 607 的问题;无可用日历时改为打开系统新建日程页

1.0.0(2026-08-16)

  • 新增 xAddPhoneCalendar / xAddPhoneRepeatCalendar,支持 Android / iOS / HarmonyOS / 微信小程序写入系统日历
最近更新