日历日程使用指导

← 返回日历日程组件参考 · 全部使用指导

日历日程使用指导

不可见组件:往手机的系统日历里添加日程(可以设提前几分钟提醒,到时由系统日历弹提醒,App 关着也照样提醒)、 查询某段时间的日程、删除日程;或者打开系统日历的新建日程界面,预先填好内容,由用户自己确认保存。

添加、查询、删除的结果都通过事件返回(先调用方法,再在对应事件里拿结果)。 第一次添加或查询时会向用户申请日历权限;只用「打开新建日程界面」不需要任何权限,应用也不会声明日历权限。

快速上手:把会议加入日历

各案例独立使用;组合到同一屏幕时,将同名事件的处理合并到一个事件积木中。

when 按钮_加入.Click() {
  日历日程1.AddEvent("组会", 计时器1.MakeInstantFromParts(2026, 10, 8, 9, 0, 0), 计时器1.MakeInstantFromParts(2026, 10, 8, 10, 0, 0), "305 室", "带电脑", 15)
}

when 日历日程1.EventAdded(日程编号) {
  微数据库1.StoreValue("meeting_id", 日程编号)
  对话框1.ShowAlert("已加入日历,开会前 15 分钟提醒")
}

when 按钮_取消.Click() {
  日历日程1.DeleteEvent(微数据库1.GetValue("meeting_id", 0))
}

添加成功后拿到的日程编号要存起来(上面存进了微数据库),以后删除这条日程时要用。

列出未来 7 天的日程

查询结果是一个列表,每一项是一个字典,键有 id、title、start、end、location、description、allDay, 其中 start、end 是毫秒数,用计时器的「由毫秒建时间点」转成时间点再格式化:

when 按钮_查询.Click() {
  日历日程1.GetEvents(计时器1.Now(), 计时器1.AddDays(计时器1.Now(), 7))
}

when 日历日程1.GotEvents(日程列表) {
  var lines = []
  foreach ev in 日程列表 {
    listAdd(lines, join(计时器1.FormatDateTime(计时器1.MakeInstantFromMillis(dictGet(ev, "start", 0)), "MM-dd HH:mm"), "  ", dictGet(ev, "title", "")))
  }
  列表显示框1.Elements = lines
}

不想申请权限?用「打开新建日程界面」,用户在系统日历里看一眼再点保存:

when 按钮_提醒我.Click() {
  日历日程1.OpenEventEditor("交电费", 计时器1.AddDays(计时器1.Now(), 3), 计时器1.AddHours(计时器1.AddDays(计时器1.Now(), 3), 1), "", "支付宝缴费")
}

搭建与测试

在设计器拖入本组件和案例涉及的按钮、标签、布局等组件,按案例中的名称重命名。先运行最小案例,确认事件返回,再增加业务逻辑。示例中的素材先上传到项目,服务器地址、令牌、文件路径换成自己的值。

可见组件需要有非零宽高;不可见工具组件必须由属性或方法启动。设计器展示样式不等于运行时已加载数据或绑定目标。联机测试应使用包含本组件的 AI 伴侣;涉及系统入口或权限的行为还要编译安装后验证。

属性、方法与事件速查

完整参数类型、默认值和平台说明见组件参考。下表按调用入口列出用途;有完成事件的方法在事件中读取结果。

入口 用途
添加日程(标题,开始时刻,结束时刻,地点,描述,提前提醒分钟)(AddEvent) 往系统日历添加一条日程,reminderMinutes 是提前几分钟提醒(-1 不提醒,0 开始时提醒)。成功后触发「日程已添加」并给出日程编号(删除时要用)。第一次会向用户申请日历权限。
删除日程(日程编号)(DeleteEvent) 按日程编号删除日程,完成后触发「日程已删除」(success 为假表示没有这条日程)。
查询日程(开始时刻,结束时刻)(GetEvents) 查询 start 到 end 之间的日程(重复日程按每次发生分别列出),结果在「获得日程」事件里:一个列表,每项是字典,键为 id、title、start、end(毫秒数)、location、description、allDay。
打开新建日程界面(标题,开始时刻,结束时刻,地点,描述)(OpenEventEditor) 打开系统日历的新建日程界面,预先填好标题、开始/结束时刻、地点和备注,由用户确认保存。不需要日历权限;用户是否保存无法得知。
日程已添加(日程编号)(EventAdded) 「添加日程」成功,eventId 是日程编号。
日程已删除(日程编号,是否成功)(EventDeleted) 「删除日程」完成,success 为假表示没有这条日程。
获得日程(日程列表)(GotEvents) 「查询日程」的结果:列表,每项是字典(id、title、start、end、location、description、allDay),按开始时刻排序;start/end 是毫秒数,可用计时器的「由毫秒建时间点」转换。

常见问题与验收

检查项 操作与预期
初始化 对照案例检查是否已经调用加载、注册、连接或显示方法;仅拖入组件不会替你执行这些步骤。
结果返回 将成功事件和失败事件都接到标签,记录事件参数;异步操作完成前不读取结果属性。
输入配置 检查素材名大小写、网址是否为直接资源地址、文件是否存在、编号和索引是否在范围内。
平台与权限 按组件参考中的平台说明测试;授权被拒绝时应有明确提示,不继续假定操作成功。
最小案例 先验证页面中的最小案例,再验证第二个场景;重复操作、取消、返回屏幕后结果应符合事件说明。

完整 .aia 源码与操作指导

下载 .aia 源码

操作真实系统日历,需要允许读写日历权限。时间由本机当前时间计算:1小时后开始、持续30分钟、提前10分钟提醒。独立安装或伴侣均操作系统日历;测试完删除直接添加的演示日程。

导入 CalendarEventsAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。

API / 功能 操作入口 预期结果
AddEvent / EventAdded 允许日历权限后点直接添加 真实系统日历新增一条,完成事件记录ID,不连续重复添加
GetEvents / GotEvents 点查询未来24小时 显示实际返回列表和数量;没有日程时为空列表
OpenEventEditor 点编辑器 打开系统新建界面,可取消或保存;保存结果需系统日历核对
DeleteEvent / EventDeleted 直接添加后点删除并确认 只删除当前运行保存的那条ID,成功后可再次添加
权限拒绝、取消、空标题 拒绝授权/取消删除/清空标题 明确错误反馈,不删除其他数据,修正后可继续

所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。

日历日程

导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 操作真实系统日历,需要允许读写日历权限。时间由本机当前时间计算:1小时后开始、持续30分钟、提前10分钟提醒。独立安装或伴侣均操作系统日历;测试完删除直接添加的演示日程。 覆盖检查 7/7。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。

文档反馈