当前位置: 首页 > news >正文

鸿蒙NEXT开发剪贴板工具类(ArkTs)

import { pasteboard } from '@kit.BasicServicesKit';
import { StrUtil } from './StrUtil';/*** 剪贴板工具类* 需要权限:*   ohos.permission.READ_PASTEBOARD  // 允许应用读取剪贴板。* @author CSDN-鸿蒙布道师* @since 2025/04/25*/
export class PasteboardUtil {/*** 将数据写入系统剪贴板,使用Promise异步回调。* @param mimeType 数据类型* @param data 数据内容* @returns Promise<void>*/static setData(mimeType: string, data: string): Promise<void> {const pasteData = pasteboard.createData(mimeType, data);return PasteboardUtil.getSystemPasteboard().setData(pasteData);}/*** 将纯文本数据写入系统剪贴板。* @param text 纯文本内容* @returns Promise<void>*/static setDataText(text: string): Promise<void> {return PasteboardUtil.setData(pasteboard.MIMETYPE_TEXT_PLAIN, text);}/*** 将HTML数据写入系统剪贴板。* @param html HTML内容* @returns Promise<void>*/static setDataHtml(html: string): Promise<void> {return PasteboardUtil.setData(pasteboard.MIMETYPE_TEXT_HTML, html);}/*** 将URI数据写入系统剪贴板。* @param uri URI内容* @returns Promise<void>*/static setDataUri(uri: string): Promise<void> {return PasteboardUtil.setData(pasteboard.MIMETYPE_TEXT_URI, uri);}/*** 获取系统剪贴板内容。* @returns Promise<pasteboard.PasteData>*/static getData(): Promise<pasteboard.PasteData> {return PasteboardUtil.getSystemPasteboard().getData();}/*** 读取系统剪贴板内容,优先级为:文本 > HTML > URI。* @returns Promise<string>*/static async getDataStr(): Promise<string> {if (!await PasteboardUtil.hasData()) {return '';}const data = await PasteboardUtil.getData();return PasteboardUtil.extractPrimaryText(data);}/*** 同步读取系统剪贴板内容,优先级为:文本 > HTML > URI。* @returns string*/static getDataSyncStr(): string {if (!PasteboardUtil.hasDataSync()) {return '';}const data = PasteboardUtil.getSystemPasteboard().getDataSync();return PasteboardUtil.extractPrimaryText(data);}/*** 清空系统剪贴板内容。* @returns Promise<void>*/static clearData(): Promise<void> {return PasteboardUtil.getSystemPasteboard().clearData();}/*** 判断系统剪贴板中是否有内容(异步)。* @returns Promise<boolean>*/static hasData(): Promise<boolean> {return PasteboardUtil.getSystemPasteboard().hasData();}/*** 判断系统剪贴板中是否有内容(同步)。* @returns boolean*/static hasDataSync(): boolean {return PasteboardUtil.getSystemPasteboard().hasDataSync();}/*** 获取系统剪贴板对象。* @returns SystemPasteboard*/private static getSystemPasteboard(): pasteboard.SystemPasteboard {return pasteboard.getSystemPasteboard();}/*** 提取剪贴板数据中的主要文本内容。* @param data 剪贴板数据* @returns string*/private static extractPrimaryText(data: pasteboard.PasteData): string {let text = data.getPrimaryText() || data.getPrimaryHtml() || data.getPrimaryUri() || '';return StrUtil.isEmpty(text) ? '' : text;}
}
代码如下:
import { pasteboard } from '@kit.BasicServicesKit';
import { StrUtil } from './StrUtil';/*** 剪贴板工具类* 需要权限:*   ohos.permission.READ_PASTEBOARD  // 允许应用读取剪贴板。* @author CSDN-鸿蒙布道师* @since 2025/04/25*/
export class PasteboardUtil {/*** 将数据写入系统剪贴板,使用Promise异步回调。* @param mimeType 数据类型* @param data 数据内容* @returns Promise<void>*/static setData(mimeType: string, data: string): Promise<void> {const pasteData = pasteboard.createData(mimeType, data);return PasteboardUtil.getSystemPasteboard().setData(pasteData);}/*** 将纯文本数据写入系统剪贴板。* @param text 纯文本内容* @returns Promise<void>*/static setDataText(text: string): Promise<void> {return PasteboardUtil.setData(pasteboard.MIMETYPE_TEXT_PLAIN, text);}/*** 将HTML数据写入系统剪贴板。* @param html HTML内容* @returns Promise<void>*/static setDataHtml(html: string): Promise<void> {return PasteboardUtil.setData(pasteboard.MIMETYPE_TEXT_HTML, html);}/*** 将URI数据写入系统剪贴板。* @param uri URI内容* @returns Promise<void>*/static setDataUri(uri: string): Promise<void> {return PasteboardUtil.setData(pasteboard.MIMETYPE_TEXT_URI, uri);}/*** 获取系统剪贴板内容。* @returns Promise<pasteboard.PasteData>*/static getData(): Promise<pasteboard.PasteData> {return PasteboardUtil.getSystemPasteboard().getData();}/*** 读取系统剪贴板内容,优先级为:文本 > HTML > URI。* @returns Promise<string>*/static async getDataStr(): Promise<string> {if (!await PasteboardUtil.hasData()) {return '';}const data = await PasteboardUtil.getData();return PasteboardUtil.extractPrimaryText(data);}/*** 同步读取系统剪贴板内容,优先级为:文本 > HTML > URI。* @returns string*/static getDataSyncStr(): string {if (!PasteboardUtil.hasDataSync()) {return '';}const data = PasteboardUtil.getSystemPasteboard().getDataSync();return PasteboardUtil.extractPrimaryText(data);}/*** 清空系统剪贴板内容。* @returns Promise<void>*/static clearData(): Promise<void> {return PasteboardUtil.getSystemPasteboard().clearData();}/*** 判断系统剪贴板中是否有内容(异步)。* @returns Promise<boolean>*/static hasData(): Promise<boolean> {return PasteboardUtil.getSystemPasteboard().hasData();}/*** 判断系统剪贴板中是否有内容(同步)。* @returns boolean*/static hasDataSync(): boolean {return PasteboardUtil.getSystemPasteboard().hasDataSync();}/*** 获取系统剪贴板对象。* @returns SystemPasteboard*/private static getSystemPasteboard(): pasteboard.SystemPasteboard {return pasteboard.getSystemPasteboard();}/*** 提取剪贴板数据中的主要文本内容。* @param data 剪贴板数据* @returns string*/private static extractPrimaryText(data: pasteboard.PasteData): string {let text = data.getPrimaryText() || data.getPrimaryHtml() || data.getPrimaryUri() || '';return StrUtil.isEmpty(text) ? '' : text;}
}

相关文章:

  • Gradle安装与配置国内镜像源指南
  • 【前缀和计算和+哈希表查找次数】Leetcode 560. 和为 K 的子数组
  • 零基础教学:用GISBox将RVT转为3DTiles
  • 日本企业突破机器人感知技术:人形机器人获嗅觉能力
  • 那些年踩过的坑之Arrays.asList
  • 7.Excel:单元格格式
  • Easysearch 基础运维扫盲指南:从 HTTP 到 HTTPS、认证与安全访问全解析
  • OpenCV 图形API(64)图像结构分析和形状描述符------在图像中查找轮廓函数findContours()
  • AI编程:[体验]从 0 到 1 开发一个项目的初体验
  • 如何在IDEA中高效使用Test注解进行单元测试?
  • 产品动态|千眼狼sCMOS科学相机捕获单分子荧光信号
  • 前端面试(Vue React)内容目录与备考建议
  • websheet 之 sheet操作
  • Spark-Streaming(三)
  • 逐行解析性能奥秘:借助 `line_profiler` 深入优化热点函数
  • Node.js 开发项目
  • Antd Modal Drawer 更改默认项
  • 【leetcode刷题日记】lc.73-矩阵置零
  • 一些有关ffmpeg 使用(1)
  • Z-Wave正通过自我革新,重塑在智能家居领域新定位
  • 建投读书会·东西汇流|全球物品:跨文化交流视域下的明清外销瓷
  • 中国海警登临铁线礁开展维权行动并展示五星红旗
  • 最高法:侵犯著作权罪中的“复制发行”不包括单纯发行行为
  • 我国成年国民综合阅读率82.1%,数字化阅读接触率首超80%
  • 920余名在缅甸当阳等地实施跨境电信网络诈骗的中国籍犯罪嫌疑人被移交我方
  • 厦门国贸去年营收约3544亿元,净利润同比减少67.3%