日历日程使用指导
不可见组件:往手机的系统日历里添加日程(可以设提前几分钟提醒,到时由系统日历弹提醒,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 源码与操作指导
操作真实系统日历,需要允许读写日历权限。时间由本机当前时间计算: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个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
扫码添加客服咨询