HarmonyOS 鸿蒙Next服务卡片在App内如何添加至桌面

发布于 1周前 作者 phonegap100 最后一次编辑是 5天前 来自 鸿蒙OS

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

5 回复
FormMenu组件仅支持长按/右键菜单快捷添加卡片到桌面,目前暂不支持点击添加。可以补充一下使用场景、影响以及安卓/IOS对标,帮您反馈一下需求

更多关于HarmonyOS 鸿蒙Next服务卡片在App内如何添加至桌面的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


对标IOS/安卓,选择组件编辑更改,点击保存按钮,即可直接添加到桌面,无需再回桌面添加卡片,然后通过点击桌面卡片再选择组件

并且目前有同类app,实现了该需求,但是bindContextMenu并未暴露添加到桌面方法

同类App是指HarmonyOS NEXT上已上架的App吗?名字是什么呀?

在HarmonyOS(鸿蒙)系统中,添加Next服务卡片至桌面的操作步骤如下:

  1. 卡片开发:首先,确保App内的Next服务卡片已按照鸿蒙开发文档完成开发,并且能够在App内部正常展示。

  2. 卡片触发点:在App内找到要添加至桌面的Next服务卡片,通常这个卡片会有一个“添加到桌面”的按钮或提示。

  3. 卡片添加操作

    • 用户点击“添加到桌面”按钮后,系统会触发一个请求,请求用户允许将卡片添加到桌面。
    • 用户确认后,鸿蒙系统会自动将该卡片生成一个快捷方式,并放置到用户的桌面。
  4. 桌面查看:添加完成后,用户可以在桌面找到新添加的Next服务卡片,并直接与其进行交互。

  5. 卡片管理:用户可以在桌面长按卡片进行编辑、移动或删除等操作。

请注意,这些步骤假设你已经完成了卡片开发并集成了必要的鸿蒙API。确保App的权限设置允许对桌面进行更改。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部