HarmonyOS鸿蒙Next轻木鱼Lite元服务中点击一键加桌的功能是怎么实现的?
HarmonyOS鸿蒙Next轻木鱼Lite元服务中点击一键加桌的功能是怎么实现的? 进入轻木鱼Lite 元服务后,点击上方“卡片加桌”按钮可以一键唤起卡片管理页面,这是通过什么方法实现的呢?
更多关于HarmonyOS鸿蒙Next轻木鱼Lite元服务中点击一键加桌的功能是怎么实现的?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next轻木鱼Lite元服务中点击一键加桌的功能是怎么实现的?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
项目名称
项目描述
- 状态:进行中
- 类型:开源
- 语言:Python
目标
- 学习Python编程
- 分享代码
进度
- 完成模块一
- 开始模块二
联系方式
- 邮箱:example@example.com
- GitHub:用户名
按照步骤使用了:
# 调用接口,加载元服务加桌页面
productViewManager.loadService(uiContext, wantParam, callback);
其中loadService
报错:This API is not supported in atomic service.
意思是这个 API 不支持元服务吗?
按照这儿的步骤进行的,
那应该是不支持,
- 楼主参考这个文档哦,我们自己的元服务添加卡片也是这样做的 FormMenu-系统预置UI组件库-ArkTS组件-ArkUI(方舟UI框架)-应用框架 - 华为HarmonyOS开发者
AddFormMenuItem(
{
bundleName: AppUtil.getBundleName(), // 包名
abilityName: 'EntryFormAbility', // 模块ability名称
parameters: {
'ohos.extra.param.key.form_dimension': 1,
'ohos.extra.param.key.form_name': 'formName',
'ohos.extra.param.key.module_name': 'entry'
},
},
"this is real id",
{
formBindingData: formBindingData.createFormBindingData({ data: 'share' }),
callback: (error, formId) => {
LogUtil.d(Tag, `callback info:error = ${JSON.stringify(error)}, formId = ${formId}`);
if (error?.code === 0) {
LogUtil.d(Tag, "添加至桌面成功")
} else {
LogUtil.d(Tag, "添加至桌面失败,请尝试其它添加方式")
}
},
style: {
options: {
content: "立即体验", // 菜单内容,可以自己提供。默认使用"sys.string.ohos_add_form_to_desktop"
}
}
}
)
.onTouch((event) => {
if (event.type === TouchType.Down) {
this.isDown = true
} else if (event.type === TouchType.Up) {
if (this.isDown) {
HMRouterMgr.pop()
const context = getContext(this) as common.UIAbilityContext;
context.moveAbilityToBackground().then(() => {
console.log(`moveAbilityToBackground success.`);
}).catch((err: BusinessError) => {
console.log(`moveAbilityToBackground error: ${err.message}.`);
});
}
this.isDown = false
}
})
.align(Alignment.Center)
.layoutWeight(1)
.padding(vertical(10))
- 这个类似于一个按钮能够添加卡片到桌面上
使用formProvider
模块的openFormManager
接口拉起系统统一的卡片管理页面:
import { formProvider } from '@kit.FormKit';
// 在按钮点击事件中调用接口
Button('卡片加桌').onClick(() => {
formProvider.openFormManager()
})
这个方法会直接跳转至系统预设的卡片管理界面,用户可在此选择将卡片添加至桌面或负一屏。
只用您复制的这一小段就可以实现吗?我刚刚尝试了一下,
这一部分报错提醒:
Expected 1 arguments, but got 0. <ArkTSCheck>,
请问楼主实现了么
是不是少东西呢
找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17
这个是API18才可用的 你得版本估计不够高,
怪不得,
怪不得,
还没实现,并且又发现了新的问题,API 18 平板端是打不开的,上架审核测试人员也是打不开。
鸿蒙Next轻木鱼Lite的"一键加桌"功能主要通过Ability和FormExtensionAbility实现。具体流程:
- 使用FormExtensionAbility创建卡片模板
- 通过FormManager的addFormToHost()方法将卡片添加到桌面
- 调用requestForm()请求系统创建卡片
- 系统回调onFormAdd()完成卡片添加
关键代码涉及formId绑定、卡片尺寸配置和动态数据更新。权限方面需要声明ohos.permission.REQUIRE_FORM权限。
在HarmonyOS Next中,一键加桌功能是通过元服务卡片管理API实现的。具体实现步骤如下:
- 使用
formHost
模块的manageForms
方法:
import formHost from '@ohos.app.form.formHost';
// 唤起卡片管理页面
formHost.manageForms((error, data) => {
if (error) {
console.error('Failed to manage forms. Cause: ' + error.message);
return;
}
console.info('Succeeded in managing forms. Data: ' + JSON.stringify(data));
});
-
该方法会直接调起系统原生的卡片管理界面,用户可以在该界面选择添加卡片到桌面。
-
开发者需要先在config.json中正确配置卡片信息:
"forms": [
{
"name": "widget",
"description": "轻木鱼卡片",
"type": "JS",
"jsComponentName": "widget",
"colorMode": "auto",
"isDefault": true,
"updateEnabled": true,
"scheduledUpdateTime": "10:30",
"updateDuration": 1,
"defaultDimension": "2*2",
"supportDimensions": ["2*2"]
}
]
注意:调用此API需要申请ohos.permission.REQUIRE_FORM权限。