HarmonyOS 粘贴板如何使用的 Demo

我们有剪贴板的功能,麻烦帮忙提供一个使用的 Demo。我们找到了 api setData 没问题,getData 获取不到数据

案例如下:

private async aa(callbackContext: CallbackContext) {
  // 构建一个自定义类型的剪贴板内容对象
  let pasteData: pasteboard.PasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, 'aaaaaaaa');

  let prop: pasteboard.PasteDataProperty = pasteData.getProperty();
  prop.shareOption = pasteboard.ShareOption.LOCALDEVICE;
  pasteData.setProperty(prop);

  // 获取系统剪贴板对象
  let systemPasteBoard: pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
  // 将数据写入系统剪贴板
  await systemPasteBoard.setData(pasteData).then(() => {
    // 在这里执行成功时的回调操作
    CordovaLog.i(Constants.TAG, "Data set successfully!" )
    callbackContext.success()
  }).catch((err: BusinessError) => {
    // 执行失败
    CordovaLog.e(Constants.TAG, `Failed to set pastedata. Code: ${err.code}, message: ${err.message}`)
    callbackContext.errorByJson(err)
  });

  setTimeout(() => {

    this.bb()
  }, 5000)

}

bb () {
  // 获取系统剪贴板对象
  let systemPasteBoard: pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
  // 读取系统剪贴板内容

  systemPasteBoard.getData((err: BusinessError, data: pasteboard.PasteData) => {
    if (err) {
      console.error(`Failed to get pastedata. Code: ${err.code}, message: ${err.message}`);
      return;
    }
    // 对pastedata进行处理,获取类型,个数等
    let recordCount: number = data.getRecordCount(); // 获取剪贴板内record的个数
    let types: string = data.getPrimaryMimeType(); // 获取剪贴板内数据的类型
    let primaryText: string = data.getPrimaryText(); // 获取剪贴板内数据的内容
    console.log('----粘贴 pasteboard', data)
    console.log('---typeof', typeof data)
    console.log('-----粘贴recordCount',recordCount)
    console.log('-----粘贴types',types)
    console.log('-----粘贴primaryText',primaryText)
  });
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.

这样获取到的结果是 undefined

HarmonyOS
2025-01-10 08:32:50
1.0w浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
fox280

可参考如下代码:

import { pasteboard } from '@kit.BasicServicesKit';
import { promptAction } from '@kit.ArkUI';

@Entry
@Component
struct Index14 {
  @State message: string = 'Hello World';

  build() {
    Column() {

      Text(this.message).onClick(() => {
        const pasteboardData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, this.message)
        const systemPasteboard = pasteboard.getSystemPasteboard()
        systemPasteboard.setData(pasteboardData) //将数据放入剪切板
        systemPasteboard.getData().then((data) => {
          if (data) {
            promptAction.showToast({ message: "复制成功:"+data.getPrimaryText() })
          } else {
            promptAction.showToast({ message: "复制失败" })
          }
        })
      })

    }.width('100%').height('100%').justifyContent(FlexAlign.Center)
  }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.

从api11开始,对读取剪贴板接口增加读权限校验ohos.permission.READ_PASTEBOARD

分享
微博
QQ
微信
回复
2025-01-10 12:33:08


相关问题
HarmonyOS如何实现粘贴板功能
848浏览 • 1回复 待解决
HarmonyOS 如何访问粘贴板呢?
448浏览 • 1回复 待解决
HarmonyOS 如何获取和设置粘贴板
769浏览 • 1回复 待解决
HarmonyOS 怎样将文本复制到粘贴板
602浏览 • 1回复 待解决
HarmonyOS 系统剪贴板复制粘贴方法
750浏览 • 1回复 待解决
HarmonyOS 全局粘贴功能
420浏览 • 1回复 待解决
HarmonyOS flutterTextField无法正常粘贴
292浏览 • 1回复 待解决
HarmonyOS 是否有全局粘贴功能
550浏览 • 1回复 待解决
HarmonyOS贴板
521浏览 • 1回复 待解决
HarmonyOS socketio使用demo
504浏览 • 1回复 待解决
HarmonyOS iconfont使用demo
516浏览 • 1回复 待解决
HarmonyOS 复制粘贴功能
617浏览 • 1回复 待解决
HarmonyOS TextInput支持禁止粘贴
417浏览 • 1回复 待解决
requestPermissionsFromUser使用Demo
1879浏览 • 1回复 待解决
HarmonyOS贴板问题
668浏览 • 1回复 待解决