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)
  });
}

这样获取到的结果是 undefined

HarmonyOS
1天前
浏览
收藏 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)
  }
}

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

分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 如何获取和设置粘贴板
189浏览 • 1回复 待解决
HarmonyOS 如何访问粘贴板呢?
156浏览 • 1回复 待解决
HarmonyOS如何实现粘贴板功能
523浏览 • 1回复 待解决
HarmonyOS 怎样将文本复制到粘贴板
198浏览 • 1回复 待解决
HarmonyOS 系统剪贴板复制粘贴方法
397浏览 • 1回复 待解决
HarmonyOS 全局粘贴功能
120浏览 • 1回复 待解决
HarmonyOS贴板
201浏览 • 1回复 待解决
HarmonyOS iconfont使用demo
149浏览 • 1回复 待解决
HarmonyOS socketio使用demo
119浏览 • 1回复 待解决
HarmonyOS 是否有全局粘贴功能
250浏览 • 1回复 待解决
HarmonyOS TextInput支持禁止粘贴
87浏览 • 1回复 待解决
HarmonyOS 复制粘贴功能
255浏览 • 1回复 待解决
requestPermissionsFromUser使用Demo
1658浏览 • 1回复 待解决
HarmonyOS贴板用法
43浏览 • 1回复 待解决