鸿蒙巧用剪切板提升交互体验
温馨提示:本文最后更新于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()