WPS 鸿蒙二开:关闭回传 URI/FD 清单
社区同事常问:编辑完关掉文档,怎么把结果拿回三方应用?在 WPS Open SDK 鸿蒙对接里,关闭回传挂在同一次 sendRequest 上:设了回传就会等待用户关窗,再在结果里给出 URI 或 FD。下文按清单写,方便对照联调。细节以官方对接文档为准。
能力落在哪
能力 | 入口 |
开启回传 | enableTransferFile 或 wpsTransferType |
URI / FD | TransferType.URI / TransferType.FD |
结果数据 | Result.data(fileUri / transferFd) |
本应用可用路径 | 拷贝到本应用沙箱之后 |
先注册成功,打开路径建议先落沙箱。wpsTransferType 优先级高于 enableTransferFile。
关键规则
未开回传:拉起成功即可 OK,data 常空(正常)
开了回传:等到用户关闭文档才返回带数据的结果
URI 的 fileUri 在 WPS 沙箱,必须拷贝到本应用后再给业务
FD 用后关闭描述符;关注文件名等 parameters
推荐联调顺序
注册 OK
沙箱可编辑打开(不开回传)
开 URI 回传 → 关文档 → 见 fileUri
拷贝到本应用沙箱并验证可读
可选再验 FD
每步只改一类行为。ERROR 先看 msg。
短示例(URI)
const req = new OpenFileRequest(ctx, sandboxPath);
req.enableEdit = true;
req.wpsTransferType = TransferType.URI;
const result = await WPSApi.sendRequest(req);
if (result.code === ResultCode.OK && result.data?.fileUri) {
const local = copyWpsUriToSandbox(ctx, result.data.fileUri);
// 业务只用 local
}常见误区
误区 | 说明 |
以为卡死 | 其实在等关窗 |
OK 且 data 空当失败 | 未开回传时属正常 |
直接用 fileUri | 未拷贝,后续易失败 |
FD 不 close | 资源泄漏 |
回传与水印混查 | 不同字段,分开排查 |
小结
关闭回传是结果层等待:显式设置类型,关窗后解析,再拷贝到本应用沙箱。字段与示例以官方对接文档为准。欢迎在本圈补充真机等待与拷贝现象。
接入时确认 HAR、沙箱目录、正式包包名。换 HAR 后 clean。建议 Facade 统一回传模式与拷贝。UI 提示「请关闭文档以回传结果」,减少误报卡死。拷贝目录用时间戳隔离。需要清理临时文件时,拷贝成功后再删,失败只打日志。
真机固定用例:可编辑 + URI 拷贝成功。可选 FD。反馈时写上是否开回传、模式、是否已得到本应用路径。把「未开回传 data 可空;开了要等关窗;URI 先拷贝」三句话贴进联调页,新人对照会更快。路径务必先落沙箱。未注册完成就发送会抛异常,应先查注册。欢迎补充各机型关窗时序差异,便于对齐验收口径。
开了回传时,页面最好有「等待关闭文档」提示,避免被当成卡死。拷贝目录用时间戳,防止两次编辑互相覆盖。清理临时文件失败只打日志,不要挡住已经拿到的本应用路径。URI 与 FD 验收分开做。把清单坚持几周,回传相关提问通常会减少。细节以官方对接文档为准。