【鸿蒙二开】WPS SDK 打开本地文档要点
HarmonyOS 应用要在端内打开 Word、Excel、PPT,常见路径是集成 WPS Open SDK 鸿蒙统一版:一套 WPSApi 覆盖专业版(ToB)与个人版(ToC)。两边都必须 registerApp 成功才能 sendRequest。打开动作集中在 OpenFileRequest:构造要沙箱可读路径,enableEdit 未设就是只读,未注册就打开会抛异常而不是返回失败码。社区联调里最常见的两类现象是:系统选择器路径直接丢给 WPS,以及把拉起成功当成「已保存」。本文按交流帖口径压缩成要点、最小代码与排查清单。
打开在调用链中的位置
顺序固定:HAR → registerApp → ToB 再 setWpsFileToken → 拷贝进应用沙箱 → new OpenFileRequest → sendRequest。ToC 注册 OK 即可打开,无需序列号。不要把 Token 写在 OpenFileRequest.wpsToken 上。构造函数两个参数都必填:UIAbilityContext 必须是当前 Ability,fileUri 建议已拷进 filesDir 的路径。系统选择器 URI 直接传入时,WPS 进程常常读不到,msg 却不一定写权限二字。
官方对接文档:https://365.kdocs.cn/l/clQl5cek2NoT
最小代码
import { WPSApi, OpenFileRequest, ResultCode } from '@wps/wps_sdk';
const req = new OpenFileRequest(ctx, sandboxPath);
req.enableEdit = true; // 不写或 false = 只读
const r = await WPSApi.sendRequest(req);
if (r.code === ResultCode.OK && !r.data) {
// 未开回传:只表示拉起成功
}注册侧仍要先 OK。未注册时 sendRequest 走 reject。
对照表
检查 | 说明 |
Context | 当前 UIAbility |
路径 | 先拷到 filesDir |
enableEdit | 显式 true 才能改 |
Token | 全局 setWpsFileToken,不写 Request |
空 data | 未开回传时正常 |
现象对照
「点了没反应」:按钮没等注册 OK,异常被吞
「文件管理器能开、应用内不能」:没拷沙箱
「只读也能改」:漏写或误写 enableEdit
「提示保存成功」:把拉起 OK 当成回传
能力叠加约定:注册成功 → 按需 Token → 只读打开 → 可编辑 → 水印 / extraOptions → 回传。出现 1013 时先对齐 Bundle 与申请归档,不要先改路径。调试包与正式包 Bundle 不同时,凭据必须分开。HAR 升级后先只替换依赖并重跑注册与只读打开。
联调清单
冷启动注册 OK
选择器文件拷进沙箱再打开
只读 / 可编辑各验一次
ToB 确认 setWpsFileToken;全仓清理 request.wpsToken
未开回传时 UI 不说「已保存」
全仓只有一处 new OpenFileRequest
预览入口与编辑入口共用一个打开函数,只差 enableEdit 布尔值。两套 new OpenFileRequest 后续叠水印时容易漂移。sendRequest 未注册走 reject,UI 要单独文案,不要显示成文档损坏。换 HAR 后 ohpm install 并 clean。调试包与商店包凭据分开归档。全仓搜索 new OpenFileRequest 应只落在封装文件。
小结与获取 SDK
统一版交付是一套 API 覆盖双形态,打开面仍要守住注册门禁、沙箱路径、默认只读、异常与 Result 分列。发版评审把 HAR 文件名与一次冷启动注册日志写进周期。字段以官方对接文档为准,随小版本核对 enableEdit 与回传开关,不要把整张参数表贴进业务页。
更多参数见官方对接文档:https://365.kdocs.cn/l/clQl5cek2NoT
申请 SDK HAR 与凭据:m_open_sdk@wps.cn(注明包名与专业版/个人版需求)。
技术交流 QQ 群:628436767