HarmonyOS 鸿蒙Next服务卡片在App内如何添加至桌面
HarmonyOS 鸿蒙Next服务卡片在App内如何添加至桌面
app内怎么通过点击事件将服务卡片添加桌面,我使用bindContextMenu实现方式只有长按和鼠标右键,不太符合实际业务需求
// index.ets
import { AddFormMenuItem } from '@kit.ArkUI';
import { formBindingData } from '@kit.FormKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
const tag = 'AddFormMenuItem';
interface formCardAddItem {
widgetName: string,
image: ResourceStr,
id: string,
form_dimension: number
}
@Entry
@Component
struct Index {
@State isShown: boolean = false
formCardAddItems: formCardAddItem[] = [
{
widgetName: 'widget',
image: $r('app.media.card1'),
id: 'addforms@d46313145',
form_dimension: 2
},
{
widgetName: 'widget1',
image: $r('app.media.card2'),
id: 'addforms@d46313146',
form_dimension: 3
},]
@Builder
MyMenu(compId: string, widgetName: string, form_dimension: number) {
Menu() {
AddFormMenuItem(
//want
{
bundleName: 'com.example.myapplication', // 包名
abilityName: 'EntryFormAbility', // 模块ability名称
parameters: {
'ohos.extra.param.key.form_dimension': form_dimension,
'ohos.extra.param.key.form_name': widgetName,
'ohos.extra.param.key.module_name': 'entry'
},
},
//功能id
compId,
//添加卡片选项
{
//卡片数据
formBindingData: formBindingData.createFormBindingData({}),
// formBindingData: formBindingData.createFormBindingData({ data: 'share' }),
// 返回结果的回调
callback: (error, formId) => {
hilog.info(0x3900, tag, `callback info:error = ${JSON.stringify(error)}, formId = ${formId}`);
if (error?.code === 0) {
hilog.info(0x3900, tag, "添加至桌面成功")
} else {
hilog.info(0x3900, tag, "添加至桌面失败,请尝试其它添加方式")
}
},
style: {
options: {
// startIcon: $r("app.media.icon"), // 菜单图标,可以自己提供。系统默认采用"sys.media.ic_public_add"
content: "添加到桌面", // 菜单内容,可以自己提供。默认使用"sys.string.ohos_add_form_to_desktop"
// endIcon: $r("app.media.icon") // 菜单图标,可以自己提供
}
}
}
)
}
}
private iconStr: ResourceStr = $r("app.media.app_icon")
@Builder
MyMenu1() {
Menu() {
MenuItem({ startIcon: this.iconStr, content: "菜单选项" })
MenuItem({ startIcon: this.iconStr, content: "菜单选项" })
MenuItem({ startIcon: this.iconStr, content: "菜单选项" })
}
}
@Builder
MyPreview() {
Column() {
Text('MyPreview')
.width(200)
.height(200)
}
}
build() {
Column({ space: 50 }) {
ForEach(this.formCardAddItems, (item: formCardAddItem, index: number) => {
Column({ space: 0 }) {
Text()
.height('65%')
.width('80%')
.backgroundImage(item.image)
.backgroundImageSize(ImageSize.Contain)
}
.alignItems(index === 0 ? HorizontalAlign.Start : HorizontalAlign.Center)
.bindContextMenu(
this.MyMenu(item.id, item.widgetName, item.form_dimension),
ResponseType.LongPress,
{
placement:Placement.Top
})
.onClick(()=>{
})
.id(item.id)
.width('100%')
.height('28%')
.padding({ right: 15, left: 15 })
})
Text('preview-builder')
.width(200)
.height(100)
.textAlign(TextAlign.Center)
.margin(100)
.fontSize(30)
.bindContextMenu(this.isShown, this.MyMenu1,
{
preview: this.MyPreview,
onDisappear: ()=>{
this.isShown = false;
}
})
}
.padding({ top: 100 })
.backgroundColor('#f1f3f5')
.height('100%')
.width('100%')
}
}
更多关于HarmonyOS 鸿蒙Next服务卡片在App内如何添加至桌面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS 鸿蒙Next服务卡片在App内如何添加至桌面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
对标IOS/安卓,选择组件编辑更改,点击保存按钮,即可直接添加到桌面,无需再回桌面添加卡片,然后通过点击桌面卡片再选择组件
并且目前有同类app,实现了该需求,但是bindContextMenu并未暴露添加到桌面方法
同类App是指HarmonyOS NEXT上已上架的App吗?名字是什么呀?
在HarmonyOS(鸿蒙)系统中,添加Next服务卡片至桌面的操作步骤如下:
-
卡片开发:首先,确保App内的Next服务卡片已按照鸿蒙开发文档完成开发,并且能够在App内部正常展示。
-
卡片触发点:在App内找到要添加至桌面的Next服务卡片,通常这个卡片会有一个“添加到桌面”的按钮或提示。
-
卡片添加操作:
- 用户点击“添加到桌面”按钮后,系统会触发一个请求,请求用户允许将卡片添加到桌面。
- 用户确认后,鸿蒙系统会自动将该卡片生成一个快捷方式,并放置到用户的桌面。
-
桌面查看:添加完成后,用户可以在桌面找到新添加的Next服务卡片,并直接与其进行交互。
-
卡片管理:用户可以在桌面长按卡片进行编辑、移动或删除等操作。
请注意,这些步骤假设你已经完成了卡片开发并集成了必要的鸿蒙API。确保App的权限设置允许对桌面进行更改。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html 。