Install
openclaw skills install harmonyos-sharesdk-integretionInteractive guide for integrating MobTech ShareSDK into HarmonyOS NEXT projects. Use when the user wants ShareSDK sharing or Huawei authorization in a HarmonyOS app, and needs help with ohpm dependencies, module.json5 permissions, AppKey/AppSecret setup, privacy compliance, or post-integration ShareSDK extension capability guidance.
openclaw skills install harmonyos-sharesdk-integretion当用户提到以下任一主题时,使用本 skill:
如果用户的问题明确涉及 HarmonyOS NEXT 工程、ohpm 依赖、module.json5 权限、MobTech AppKey / AppSecret、ZztSDK.submitPolicyGrantResult() 或分享/授权功能接入,应优先使用本 skill。
>= 12ohpm install @zztsdk/zztcoreohpm install @zztsdk/sharesdkentry 模块的 module.json5 中配置 ohos.permission.INTERNETZztSDK.submitPolicyGrantResult(...) 隐私授权回传ZztCustomController 主动数据采集控制setUIAbilityContext(...) 以支持分享/授权 UI 能力本 skill 按你的要求采用“先完成基础接入,再在文档中说明后续扩展”的策略:
ZztCustomController 控制逻辑ShareSDK 扩展业务功能设置,供后期调整基础集成阶段默认只声明以下必需权限:
ohos.permission.INTERNET
除 INTERNET 外,其它权限不主动写入 module.json5。如果用户后续需要启用扩展业务功能、设备标识、网络信息、位置或 WiFi 相关能力,再根据实际需求补充。以下内容在官方文档中未给出完整写法,执行时必须先检查实际工程和已安装依赖,不可凭空补全:
@zztsdk/zztcore 和 @zztsdk/sharesdk 的 ArkTS 导入语句params 在 plat.authorize(params) 中的字段结构oh-package.json5、build-profile.json5、app.json5Scope 的具体业务取值miniProgramUserName、miniProgramPath、缩略图资源来源如果用户要求你写这些部分,先扫描工程现状、已安装依赖和类型声明;若仍无法确认,明确告诉用户“官方文档未明确”。
所有写文件和改文件操作前,都必须先展示计划修改内容并等待用户确认。
主动询问用户提供 HarmonyOS 项目根路径,例如:
/Users/xxx/your-harmony-project
至少检查以下文件中的一种或多种是否存在:
build-profile.json5oh-package.json5entry/src/main/module.json5src/main/module.json5优先识别 entry 模块的 module.json5。
如果路径不合法或不像 HarmonyOS 工程,提示:
路径验证失败,未识别到有效的 HarmonyOS 工程结构。
请确认项目根目录下至少存在以下文件之一:
- build-profile.json5
- oh-package.json5
- entry/src/main/module.json5
执行:
assets/generate_excel_template.pyassets/ShareSDK_HarmonyOS_Config_Template.xlsxShareSDK_HarmonyOS_Config.xlsx明确要求用户填写:
appKeyappSecretclient_idAppKeyRedirectURICallbackAbilityNameScope(如项目需要)AppKeyAppSecret等待用户回复“填好了”后再继续。
读取 ShareSDK_HarmonyOS_Config.xlsx 后,至少校验:
appKey:必填,不能为空appSecret:必填,不能为空bundleName:必填,不能为空apiVersion:如填写,必须是整数且应 >= 12enableHuaweiAuth:必须可转换为 true / falseclientId:当 enableHuaweiAuth=true 时必填enableWeibo:必须可转换为 true / falseweiboAppKey:当 enableWeibo=true 时必填weiboRedirectUrl:当 enableWeibo=true 时必填weiboCallbackAbilityName:当 enableWeibo=true 时必填enableWechat:必须可转换为 true / falsewechatAppKey:当 enableWechat=true 时必填wechatAppSecret:当 enableWechat=true 时必填类型转换规则:
appKey、appSecret、clientId、bundleName 一律按字符串处理weiboAppKey、weiboRedirectUrl、weiboCallbackAbilityName、weiboScope、wechatAppKey、wechatAppSecret 一律按字符串处理true / falseapiVersion 统一转为整数若校验失败:
确认后再执行以下修改。
官方文档给出的安装命令是:
ohpm install @zztsdk/zztcore
ohpm install @zztsdk/sharesdk
如果用户希望你代执行,应先说明将运行上述命令;如果项目已有依赖,则以实际工程为准,不重复破坏性修改。
module.json5 修改必须优先在 entry 模块的 module.json5 中处理。
官方文档明确要求:
requestPermissionsohos.permission.INTERNET本 skill 的默认策略是:基础集成阶段仅主动声明 ohos.permission.INTERNET,不把其它权限预置到 module.json5 中。
client_id 配置仅当用户启用华为授权时,在 module.json5 的 metadata 中增加:
{
"name": "client_id",
"value": "用户填写的Client ID"
}
如工程已存在 metadata,应在原结构中合并,而不是覆盖。
querySchemes 配置如果启用了对应平台能力,在 entry 模块 module.json5 的 module.querySchemes 中按需增量合并:
sinaweiboweixin示例:
{
"module": {
"querySchemes": [
"sinaweibo",
"weixin"
]
}
}
不要覆盖工程中原有的 querySchemes。
在使用 SDK 功能前,需先调用:
ZztSDK.init(context, "您的AppKey", "您的AppSecret")
优先把初始化放在应用启动路径或用户功能入口前的稳定位置。
如果工程入口无法快速确认,先扫描以下位置:
entry/src/main/ets/entryability/EntryAbility.etsentry/src/main/ets/app.etsUIAbility / AppAbility / 启动页文件如果仍无法判断,向用户展示候选位置并让其确认。
向用户说明:
根据 MobTech 隐私合规要求,使用 ShareSDK 需要在用户同意隐私政策后才能回传授权结果。
你需要在 App 中:
1. 首次启动时展示《隐私政策》弹窗
2. 用户点击“同意”按钮后,调用隐私授权代码
3. 用户点击“不同意”则不应调用
请告知我:用户点击隐私政策“同意”按钮的回调代码在哪个文件、哪个方法中?
例如:EntryAbility.ets 的 onPrivacyAgreed() 方法,或具体位置如 entry/src/main/ets/entryability/EntryAbility.ets:80
等待用户告知具体的文件路径和方法名。
文档要求:只有在用户同意隐私政策后,才能调用:
ZztSDK.submitPolicyGrantResult(isGranted)
要求:
ZztCustomController 代码ZztCustomController 或 ZztSDK.updateZztCustomController(...)展示要插入的代码:
// 用户同意隐私政策后调用
ZztSDK.submitPolicyGrantResult(true)
完整示例:
onPrivacyAgreed() {
// 用户点击同意按钮
// === ShareSDK 隐私授权 ===
ZztSDK.submitPolicyGrantResult(true)
// ========================
// 其他业务逻辑...
}
询问:
以上代码将插入到 {文件} 的 {方法} 中,是否确认?
主动询问用户:
现在来配置分享和授权功能,请告诉我:
1. 希望在哪个位置执行分享?
- 例如:ArticlePage.ets 的分享按钮点击事件
- 或:SharePage.ets 的 onShareClick() 方法
2. 如需华为授权,希望在哪个位置执行授权?
- 例如:LoginPage.ets 的 onHuaweiLoginClick() 方法
3. 如启用了微博授权或分享,希望在哪个位置执行微博能力?
- 例如:LoginPage.ets 的 onWeiboLoginClick() 方法
- 例如:SharePage.ets 的 onShareToWeibo() 方法
4. 如启用了微信授权或分享,希望在哪个位置执行微信能力?
- 例如:LoginPage.ets 的 onWechatLoginClick() 方法
- 例如:SharePage.ets 的 onShareToWechat() 方法
5. 分享内容是什么?
- 文本内容:
- 标题(如有):
- 链接 URL(如有):
- 图片(如有):
6. 分享方式:
- A. 使用系统分享能力
- B. 使用指定平台能力(微博 / 微信 / 微信朋友圈)
UIAbilityContext在使用分享/授权 UI 前,先设置:
await mobShare.ShareSDK.getInstance().setUIAbilityContext(getContext() as common.UIAbilityContext)
可按官方示例插入基础分享流程:
mobShare.SharedParam[]mobShare.Platform.SYSTEMPlatformActionListenershare(...)可按官方示例插入:
getPlatformAsync(mobShare.Platform.HUAWEI)setPlatformActionListener(...)authorize(params)showUser()isAuthValid()removeAccount()注意:authorize(params) 的 params 字段结构官方文档未明确,不能自行编造。若需要落业务代码,先在本地依赖类型或官方 API 文档中确认。
如果启用了微博授权/分享,必须补充以下平台初始化:
setPlatformDevInfoAsync(mobShare.Platform.SinaWeibo, map)map 至少包含:
mobShare.Platform_Info.APP_KEYmobShare.Platform_Info.REDIRECT_URLmobShare.Platform_Info.CALLBACK_ABILITY_NAMEScope示例:
let map = new HashMap<string, Object>()
map.set(mobShare.Platform_Info.APP_KEY, "weibo_app_key")
map.set(mobShare.Platform_Info.REDIRECT_URL, "weibo_redirect_url")
map.set(mobShare.Platform_Info.CALLBACK_ABILITY_NAME, "EntryAbility")
let isSuccess = await mobShare.ShareSDK.getInstance().setPlatformDevInfoAsync(mobShare.Platform.SinaWeibo, map)
微博授权示例:
let plat = await mobShare.ShareSDK.getInstance().getPlatformAsync(mobShare.Platform.SinaWeibo)
plat.setPlatformActionListener(receive)
plat.authorize()
微博取用户信息示例:
let plat = await mobShare.ShareSDK.getInstance().getPlatformAsync(mobShare.Platform.SinaWeibo)
plat.setPlatformActionListener(receive)
plat.showUser()
微博分享示例能力范围:
图片分享时,官方文档明确说明目前只能分享沙盒路径图片。
如果启用了微信授权/分享,必须补充以下平台初始化:
setPlatformDevInfoAsync(mobShare.Platform.Wechat, map)map 至少包含:
mobShare.Platform_Info.APP_KEYmobShare.Platform_Info.APP_SECRET示例:
let map = new HashMap<string, Object>()
map.set(mobShare.Platform_Info.APP_KEY, "wechat_app_key")
map.set(mobShare.Platform_Info.APP_SECRET, "wechat_app_secret")
let isSuccess = await mobShare.ShareSDK.getInstance().setPlatformDevInfoAsync(mobShare.Platform.Wechat, map)
微信授权示例:
let plat = await mobShare.ShareSDK.getInstance().getPlatformAsync(mobShare.Platform.Wechat)
plat.setPlatformActionListener(receive)
plat.authorize()
微信取用户信息示例:
let plat = await mobShare.ShareSDK.getInstance().getPlatformAsync(mobShare.Platform.Wechat)
plat.setPlatformActionListener(receive)
plat.showUser()
微信分享示例能力范围:
微信朋友圈分享时,按官方示例在分享参数中设置 scene: 1。
如果启用了微博或微信授权/分享,需要在回呼 Ability 的 onCreate 和 onNewWant 中调用:
mobShare.ShareSDK.getInstance().handlerWant(want, this.context)
插入前必须先确认用户指定的回呼 Ability 文件与方法位置。
在生成分享或授权代码后,必须先向用户展示将插入的代码和目标位置,再询问:
以上是生成的 ShareSDK 代码,将插入到 {文件} 的 {方法} 中,是否确认?
完成集成后,在用户项目中生成一份 SHARESDK_HARMONYOS_README.md,至少包含:
module.json5 配置appKey / appSecret 来源client_id 来源ohos.permission.INTERNET)querySchemes 配置结果setPlatformDevInfoAsync(...) 配置结果handlerWant(...) 插入位置ZztCustomController 的用途ZztSDK.submitPolicyGrantResult(true, controller) 的使用场景ZztSDK.updateZztCustomController(...) 的补充用法requestPermissions、metadata、初始化逻辑或隐私弹窗逻辑metadata 做增量合并ZztCustomController 控制逻辑,除非用户明确要求如果用户在集成完成后要求严格控制可选信息采集,再建议实现 ZztCustomController,并根据官方文档控制以下能力:
基础集成默认先完成最小必需权限接入;扩展能力、附加权限和数据采集控制放到后续调整阶段处理。