HarmonyOS 鸿蒙Next如何实现跨应用拖拽

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何实现跨应用拖拽

两个应用都是窗口模式,如何将图片从应用1拖拽到应用2,有没有大佬解答一下

3 回复

楼主您好,该问题需要完整的demo分析,建议通过在线提单提交问题。

支持 - 在线提单 - 华为开发者联盟 (huawei.com)

在应用1里的图片如下:

 Image(this.imgUri)
        .width('80%')
        .height(80)
        .margin(30)
        .draggable(true)
        .onDragStart((event: DragEvent) => {
          let image: unifiedDataChannel.Image = new unifiedDataChannel.Image();
          image.imageUri = this.imgUri;
          let data: unifiedDataChannel.UnifiedData = new unifiedDataChannel.UnifiedData(image);
          event.setData(data);
          return { builder: () => {
            this.pixelMapBuilder()
          }, extraInfo: 'custom extra info.' }
        })<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

应用2里接收如下

      Column() {
        Image(this.imgUri)
          .width('80%')
          .height(80)
          .margin(30)
          .backgroundColor(Color.Pink)
          .draggable(true)
      }
      .height('50%')
      .width('90%')
      .draggable(true)
      .border({ width: 1 })
      .onDragEnter((event: DragEvent | undefined, extraParams: string | undefined) => { //拖拽进去组件
        console.info('wyb: onDragEnter, ' + extraParams)
      })
      .onDragMove((event: DragEvent | undefined, extraParams: string | undefined) => { //拖拽时移动
        console.info('wyb: onDragMove, ' + extraParams)
      })
      .onDragLeave((event: DragEvent | undefined, extraParams: string | undefined) => { //拖拽离开组件
        console.info('wyb: onDragLeave, ' + extraParams)
      })
      .onDrop((event: DragEvent) => { //释放组件
        console.info('wyb: onDragDrop, ')
        try {
          let data = event.getData();  //  这里拿到的是undefined,报错走catch了
          let record = data.getRecords();
          let img = (record[0] as unifiedDataChannel.Image)
        } catch (err) {
          console.error(`err: ${JSON.stringify(err.code)}, ${JSON.stringify(err.message)}`)
        }
      })<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

HarmonyOS 鸿蒙Next实现跨应用拖拽功能,主要通过分布式拖拽API实现。开发者需要在应用界面上设置监听器来监听拖拽事件,准备并封装拖拽数据,然后调用HarmonyOS的拖拽API发起拖拽操作。接收端应用也需设置监听器来接收并处理拖拽数据。此功能需确保双端设备登录同一华为账号,并接入同一局域网,同时打开Wi-Fi和蓝牙开关。具体实现细节可参考HarmonyOS官方文档和开发指南。如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部