api
dialog
查看 Markdown显示系统消息框、确认框,选择文件或保存位置。
显示系统消息框、确认框,选择文件或保存位置。
dialog 只负责用户交互和文件选择,不读取、写入或删除文件。选择器返回的
app://picked/<id> 句柄应继续交给 fs使用。
实现入口是 frontend/src/api/dialog.ts。
| 方法 | 返回 | 取消表现 |
|---|---|---|
| message | { confirmed } | 返回 false |
| confirm | { confirmed } | 返回 false |
| openFile | { file } | 返回 { file: null } |
| saveFile | { file } | 返回 { file: null } |
| 项 | Windows | Android |
|---|---|---|
| 实现 | Win32 MessageBoxW / GetOpenFileNameW / GetSaveFileNameW | AlertDialog / ACTION_OPEN_DOCUMENT / ACTION_CREATE_DOCUMENT |
| 宿主内部等待上限 | 系统对话框决定 | 60 秒 |
| 前端请求超时 | 默认 10 秒 | 默认 10 秒 |
filters | 过滤表达式 | EXTRA_MIME_TYPES |
| 用户取消 | false或 { file: null } | false或 { file: null } |
filters 没有跨平台统一的扩展名语义。传入值必须按目标平台的文件选择器规则构造,
需要跨端复用时在业务适配层转换。
Android 宿主内部最多等待 60 秒,但前端总线默认请求超时是 10 秒。用户操作超过
10 秒时,Promise 会先以 TIMEOUT拒绝;系统对话框可能仍然存在,宿主会抑制迟到
响应。用户在请求未超时前取消时,通常得到 false或 { file: null }。
const confirmed = await KSM.dialog.confirm({
title: '删除缓存',
message: '确定删除全部缓存吗?'
});
if (!confirmed.confirmed) {
return;
}
const picked = await KSM.dialog.openFile();
if (!picked.file) {
return;
}
const text = await KSM.fs.readText({ path: picked.file });content:// URI。
-用户在请求超时前取消文件选择时返回空结果,不抛 CANCELLED。
评论