当前位置: 首页 > 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;}
}

http://www.xdnf.cn/news/143425.html

相关文章:

  • 智慧医院建设的三大关键领域
  • [AI技术(二)]JSONRPC协议MCPRAGAgent
  • 【Linux篇】理解信号:如何通过信号让程序听从操作系统的指令
  • 二项式分布html实验
  • 在Android中如何使用Protobuf上传协议
  • 隧道调频广播覆盖的实现路径:隧道无线广播技术赋能行车安全升级,隧道汽车广播收音系统助力隧道安全管理升级
  • http://noi.openjudge.cn/——2.5基本算法之搜索——200:Solitaire
  • NVIDIA 高级辅助驾驶汽车安全系统 系列读后感(1)
  • 【C++】继承----下篇
  • 使用命令行加密混淆C#程序
  • MySQL表达式之公用表表达式(CTE)的使用示例
  • 海量信息处理分析有效决策
  • 反序列化漏洞1
  • RK3562/3588 系列之0—NPU基础概念
  • 链表系列一>两两交换链表中的结点
  • 大厂面试-框架篇
  • Bytebase 取得 SOC 2 Type 2 认证
  • 驱动支持的最高CUDA版本与实际安装的Runtime版本
  • 在 Spring Boot 项目中如何使用索引来优化 SQL 查询?
  • BGE-Reranker-v2-M3介绍
  • 【Pandas】pandas DataFrame radd
  • 【防火墙 pfsense】3 portal
  • Serverless 在云原生后端的实践与演化:从函数到平台的革新
  • 开发体育直播系统内容与用户管理机制技术实现方案
  • 数据结构手撕--【二叉树】
  • 组件化开发
  • maven依赖排查与注意点
  • 高精度电流检测革命:同轴分流器的创新应用与技术演进
  • 爬虫练习 js 逆向
  • Steam游戏服务器攻防全景解读——如何构建游戏级抗DDoS防御体系?