HarmonyOS 点击自定义菜单中的复制按钮时,无法完成复制

1、需求:长按pdf中的某段文字后,弹出“复制”、“添加笔记”两个菜单按钮;点击复制可实现到其他输入位置进行粘贴的功能;点击添加笔记时会获取到选中内容,并作为摘录内容填充到笔记编辑的页面;

2、问题:点击自定义菜单中的复制按钮时,无法完成复制,点击复制按钮后到其他应用的输入框位置无法完成粘贴,也没有找到方法去获取到选中的内容,导致需求中的两个功能无法实现;

3、咨询内容:

(1)如何完成复制功能?

(2)如何获取到选中的pdf内容?

(3)长按时会先显示系统自带的复制气泡弹框,然后再显示自定义弹框;尝试过通过

Web.copyOptions(CopyOptions.None)关闭复制气泡弹框,但是可能无法实现复制功能,如何实现只弹出自定义弹框的情况下还可以实现复制功能?

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
shlp

复制的内容在系统的剪贴板里面,可以通过粘贴控件或者使用api来获取。

方案一:粘贴控件

PasteButton().onClick((event: ClickEvent, result: PasteButtonOnClickResult) => {
  if (PasteButtonOnClickResult.SUCCESS === result) {
    pasteboard.getSystemPasteboard().getData((err: BusinessError, pasteData: pasteboard.PasteData) => {
      if (err) {
        console.error(`Failed to get paste data. Code is ${err.code}, message is ${err.message}`);
        return;
      }
      // 剪贴板内容为 ''
      let message = pasteData.getPrimaryText();
    });
  }
})

方案二:系统api,需要申请获取ohos.permission.READ_PASTEBOARD权限

onPageShow(): void {
  let systemPasteboard: pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
  systemPasteboard.on('update', ()=>{
  systemPasteboard.getData((err: BusinessError, pasteData: pasteboard.PasteData) => {
  if (err) {
    console.error('Failed to get PasteData. Cause: ' + err.message);
    return;
  }
  let text = pasteData.getPrimaryText()
});
});
}
分享
微博
QQ
微信
回复
1天前
相关问题
ArkTS数组复制方法
1175浏览 • 1回复 待解决
如何自定义组件原型菜单
918浏览 • 1回复 待解决
HarmonyOS 复制粘贴功能
56浏览 • 1回复 待解决
HarmonyOS 复制黏贴功能无效
317浏览 • 1回复 待解决
HarmonyOS UI组件自定义点击范围
368浏览 • 1回复 待解决
HarmonyOS 自定义弹窗点击跳转问题
28浏览 • 1回复 待解决
返回按钮是否可以自定义事件?
257浏览 • 1回复 待解决
OceanBase 复制原理是什么?
4229浏览 • 1回复 待解决