应使用 uni.shareWithSystem 而非 uni.share 实现 App 端 QQ 分享,因其无需 SDK 配置、免白名单;需传 summary 和 href(哪怕空壳链接),图片须用本地路径,不传 provider 字段。

别集成 QQ 分享 SDK —— 它在 uni-app App 端基本跑不通,白费时间。
uni.share({ provider: 'qq' }) 为什么总报错
常见错误是 {"errMsg":"share:fail 非纯图片分享必须传递链接地址!"},根本原因不是参数漏了,而是:uni.share 在 App 端依赖原生 QQ SDK,而该 SDK 要求:已备案的 AppID、正确签名、iOS 配置 Universal Link、Android 填写白名单包名 —— 这些条件绝大多数 uni-app 项目都未满足。
- 即使你按文档补全了
title和href,也只解决报错表象,不解决权限缺失本质 - QQ 官方从 2025 年起进一步收紧非白名单应用的 SDK 调用,
uni.share在 App 端只剩“分享小程序卡片”这一条窄路,且仅限已备案 AppID - 调试时看似“微信能跑、QQ 报错”,其实是微信 SDK 兼容性略好,不代表 QQ 逻辑正确
App 端真正可用的 QQ 分享方式
直接调用系统分享面板,让手机自己弹出包含 QQ 的菜单 —— 这才是零配置、跨平台、免白名单的方案:
- 用
uni.shareWithSystem,不是uni.share - 传
summary(纯文字内容) +href(跳转链接),iOS/Android 都会识别为“文本+链接”类型,QQ 图标自然出现 - 如果要带图,
imageUrl必须是本地路径(tempFilePath或uni.saveFile后的绝对路径),HTTPS 地址在 Android 上直接被忽略 - 不要传
provider字段 ——uni.shareWithSystem不认这个参数,传了反而可能干扰类型推断
想发纯文字给 QQ 好友?注意这个坑
很多人以为“不传 imageUrl 就是纯文字”,但实际行为是:
- Android:只传
summary→ 系统分享菜单里 QQ 图标灰显(不可点),因为 QQ 要求至少带链接 - 正确做法:必须同时传
summary和href,哪怕href是个空壳页面(如https://yourapp.com/share-fallback) - iOS 对
href容忍度稍高,但为了一致性,统一加href是最稳的 -
title字段在 Android 上几乎无效,别指望它控制 QQ 接收端标题;真正起作用的是summary的前几行
系统分享不是“降级方案”,而是当前最可靠的选择。复杂点在于图片和文件路径必须走本地缓存链路,这点容易被忽略 —— 临时路径(tempFilePath)在 Android 10+ 之后大概率失效,得用 uni.saveFile 存到公共目录再取真实路径。



















