Qt for HarmonyOS/user development/application share guild zh: Difference between revisions
Jump to navigation
Jump to search
| Line 23: | Line 23: | ||
|} | | |} | | ||
'' | |||
Share Kit 默认通过系统分享面板完成权限授权,通常无需手动声明权限。但需确保目标设备系统版本支持分享能力。 | ''Italic text''Share Kit 默认通过系统分享面板完成权限授权,通常无需手动声明权限。但需确保目标设备系统版本支持分享能力。 | ||
--- | --- | ||
Revision as of 02:45, 29 December 2025
本文档基于以下示例撰写,帮助开发者快速在 Qt for HarmonyOS 应用中集成 Share Kit 分享能力:
- 发送端 Demo:qtohosextras/examples/qtohosextras/abilitycontext/sharedata(核心文件 main.cpp)
- 接收端 Demo:qtohosextras/examples/qtohosextras/abilitycontext/sharedatareceiver(核心文件 main.cpp)
1. 目标与适用范围
- 说明如何在 Qt Widgets / Qt Quick 应用中构建分享内容,并通过 QtOhosExtras::ShareKit 打开系统分享面板。
- 介绍接收端如何在 Ability 启动或运行阶段 读取 Share Kit 注入的 QOhosSharedRecord。
- 给出从构建、部署到调试的关键步骤以及常见问题处理方式。
2. 开发环境与依赖
| 组件 | 说明 |
|---|---|
| Qt 模块 | QtWidgets, QtOhosExtras(包含 ShareKit, QOhosAbilityContext, QOhosAppContext 等) |
| 构建工具 | qmake + make,或 DevEco Studio 集成的 cmake kit |
| 运行环境 | 支持 Share Kit 的 HarmonyOS 设备 |
|
Italic textShare Kit 默认通过系统分享面板完成权限授权,通常无需手动声明权限。但需确保目标设备系统版本支持分享能力。
---
2.1 module.json5 配置(接收端 *必填*)
在目标应用的 `module.json5` 中为接收分享的 UIAbility 声明 `skills` 过滤器:
{
"abilities": [
{
"name": "EntryAbility",
"skills": [
{
"actions": [
"ohos.want.action.sendData"
],
"uris": [
{
"scheme": "file",
"utd": "general.image",
"maxFileSupported": 9
}
]
}
]
}
],
"requestPermissions": [
{ "name": "ohos.permission.INTERNET" }
]
}- `actions` 固定为 `ohos.want.action.sendData`
- `uris.utd` 需穷举接收端支持的所有数据类型(遵循 UTD 预置列表)
- Share Kit 官方限制:
``` 分享数据描述信息总量 ≤ 200KB``` ``` 条目总数 ≤ 500 ```
- 未正确声明上述配置,应用将不会出现在系统分享面板的候选列表中
---
3. 发送端实现指南
参考:`sharedata/main.cpp`
3.1 关键步骤
1. 准备分享记录
- ```文本记录```:
`QtOhosExtras::ShareKit::createContentRecord(QMimeType, QString)`
- ```文件记录```:
`createFileRecord(const QFileInfo &)`(自动推断 MIME)
- ```缩略图(可选)```:
读取 `:/qt_logo.png` 并通过 `setThumbnail()` 设置
2. 配置记录元数据
调用以下接口增强系统面板展示信息:
- `setTitle()`
- `setDescription()`
- `setLabel()`
- `setExtraData()`
3. 配置控制选项(可选)
- `QtOhosExtras::ShareKit::createControllerOptions()`
- `setSingleSelectionMode()`
- `setDefaultPreviewMode()`
- `setAnchor(x, y)`(大屏场景下固定弹出位置)
4. 调用分享接口
- 通过 `QOhosAbilityContext::getDefaultInstance()` 获取上下文
- 调用:
`shareDataWithShareKit(records, controllerOptionsOrNull)`
- Share Kit 弹出系统面板并等待用户选择接收应用
5. 界面交互建议
- 示例使用复选框 / SpinBox 调整控制参数
- 通过 `m_recordsToShareLabel` 提示当前分享条目数量
---
3.2 控制选项表单说明
| 控件 |
--- 3.3 代码示例auto record = QtOhosExtras::ShareKit::createContentRecord(
QMimeDatabase().mimeTypeForName("text/plain"),
QStringLiteral("Record %1 Content").arg(index));
record->setTitle(QStringLiteral("Record %1 Title").arg(index));
record->setDescription(QStringLiteral("Record %1 Description").arg(index));
auto abilityContext = QtOhosExtras::QOhosAbilityContext::getDefaultInstance();
abilityContext->shareDataWithShareKit({ record }, controllerOptionsOrNull);
--- 3.4 多记录分享
--- 4. 接收端实现指南参考:`sharedatareceiver/main.cpp` 4.1 启动阶段解析
4.2 运行时监听
4.3 UI 展示
`QFileInfo(record->filePath()).isReadable()` ---
|
|---|