首页 鸿蒙 正文
  • 本文约1500字,阅读需8分钟
  • 110
  • 0

鸿蒙巧用剪切板提升交互体验

温馨提示:本文最后更新于2024年10月17日 07:41,若内容或图片失效,请在下方留言或联系博主。

本模块主要提供管理系统剪贴板的能力,为系统复制、粘贴功能提供支持。系统剪贴板支持对文本、HTML、URI、Want、PixelMap等内容的操作。剪切板

1. 设置权限(module.json5):

 { // API12之后 读取剪切板需要权限
        "name": "ohos.permission.READ_PASTEBOARD",
        "reason": "$string:pasteboard",  // 在string.json 中同样需要添加
        "usedScene": {}
      },
API 12 版本,读取剪贴板需要 需要权限:ohos.permission.READ_PASTEBOARD

鸿蒙巧用剪切板提升交互体验

2. 设置剪切板:

// 设置文本到剪贴板 (复制)
  setPasteText(text: string) {
    // 1. 获取文本到剪贴板(复制)
    const systemPasteboard = pasteboard.getSystemPasteboard()
    // 2. 准备数据 (需要指定数据类型(文本,HTML,URL...))
    const pastData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, text)
    // 3. 将数据设置到剪切板中
    systemPasteboard.setData(pastData)
}

3. 读取剪切板:

// 获取剪贴板的文本,部分 windows 模拟器读取不到剪贴板会报错
  getPasteText() {
    // 1. 获取文本到剪贴板(复制)
    const systemPasteboard = pasteboard.getSystemPasteboard()
    // 2. 读取剪贴板的数据(坑:如果剪切板没有数据 返回 undefined)
    const pastData = systemPasteboard.getDataSync()
    // 3. 提取剪切板数据(选择类型) 可能为undefined 用可选链 ?
    return pastData?.getPrimaryText() || ''
  }

4. 完整封装代码:

import { pasteboard } from '@kit.BasicServicesKit'

// 设置/读取剪切板封装
class PasteboardManager {
  // 设置文本到剪贴板 (复制)
  setPasteText(text: string) {
    // 1. 获取文本到剪贴板(复制)
    const systemPasteboard = pasteboard.getSystemPasteboard()
    // 2. 准备数据 (需要指定数据类型(文本,HTML,URL...))
    const pastData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, text)
    // 3. 将数据设置到剪切板中
    systemPasteboard.setData(pastData)
  }

  // 获取剪贴板的文本,部分 windows 模拟器读取不到剪贴板会报错
  getPasteText() {
    // 1. 获取文本到剪贴板(复制)
    const systemPasteboard = pasteboard.getSystemPasteboard()
    // 2. 读取剪贴板的数据(坑:如果剪切板没有数据 返回 undefined)
    const pastData = systemPasteboard.getDataSync()
    // 3. 提取剪切板数据(选择类型) 可能为undefined 用可选链 ?
    return pastData?.getPrimaryText() || ''
  }
}

export const pasteboardManager = new PasteboardManager()
评论