鸿蒙开发(NEXT/API 12)【基础功能(使用剪贴板进行复制粘贴)】剪贴板服务

场景介绍

[剪贴板]为开发者提供数据的复制粘贴能力。

当需要使用复制粘贴等功能时,例如:复制文字内容到备忘录中粘贴,复制图库照片到文件管理粘贴,就可以通过剪贴板来完成。

约束限制

  • 剪贴板内容大小<128MB。
  • 为保证剪贴板数据的准确性,同一时间只能支持一个复制操作。
  • 剪贴板当前支持的数据类型有文本、HTML、URI、Want、PixelMap。
  • API version 12及之后,系统为提升用户隐私安全保护能力,剪贴板读取接口增加[权限管控]。

使用统一数据类型进行复制粘贴

为了方便剪贴板与其他应用间进行数据交互,减少数据类型适配的工作量,剪贴板支持使用统一数据对象进行复制粘贴。

新开发的应用建议使用本方案实现复制粘贴功能。

接口说明

名称说明
setUnifiedData(data: udc.UnifiedData): Promise将统一数据对象的数据写入系统剪贴板。
setUnifiedDataSync(data: udc.UnifiedData): void将统一数据对象的数据写入系统剪贴板,此接口为同步接口。
getUnifiedData(): Promise<udc.UnifiedData>从系统剪贴板中读取统一数据对象的数据。
getUnifiedDataSync(): udc.UnifiedData从系统剪贴板中读取统一数据对象的数据,此接口为同步接口。

示例代码

import {unifiedDataChannel, uniformTypeDescriptor} from '@kit.ArkData';
import {BusinessError, pasteboard} from '@kit.BasicServicesKit';// 构造一条PlainText数据,并书写获取延时数据的函数。
let plainTextData = new unifiedDataChannel.UnifiedData();
let GetDelayPlainText = ((dataType:string) => {let plainText = new unifiedDataChannel.PlainText();plainText.details = {Key: 'delayPlaintext',Value: 'delayPlaintext',};plainText.textContent = 'delayTextContent';plainText.abstract = 'delayTextContent';plainTextData.addRecord(plainText);return plainTextData;
});// 向系统剪贴板中存入一条PlainText数据。
let SetDelayPlainText = (() => {plainTextData.properties.shareOptions = unifiedDataChannel.ShareOptions.CROSS_APP;// 跨应用使用时设置为CROSS_APP,本应用内使用时设置为IN_APPplainTextData.properties.getDelayData = GetDelayPlainText;pasteboard.getSystemPasteboard().setUnifiedData(plainTextData).then(()=>{// 存入成功,处理正常场景}).catch((error: BusinessError) => {// 处理异常场景});
})// 从系统剪贴板中读取这条text数据
let GetPlainTextUnifiedData = (() => {pasteboard.getSystemPasteboard().getUnifiedData().then((data) => {let outputData = data;let records = outputData.getRecords();if (records[0].getType() == uniformTypeDescriptor.UniformDataType.PLAIN_TEXT) {let record = records[0] as unifiedDataChannel.PlainText;console.log('GetPlainText success, type:' + records[0].getType + ', details:' +JSON.stringify(record.details) + ', textContent:' + record.textContent + ', abstract:' + record.abstract);} else {console.log('Get Plain Text Data No Success, Type is: ' + records[0].getType());}}).catch((error: BusinessError) => {//处理异常场景})
})

使用基础类型进行复制粘贴

接口说明

使用剪贴板getData接口获取到uri类型数据之后,请使用文件管理的[fs.copy]接口获取文件。

名称说明
setData(data: PasteData, callback: AsyncCallback): void将数据写入系统剪贴板,使用callback异步回调。
setData(data: PasteData): Promise将数据写入系统剪贴板,使用Promise异步回调。
getData( callback: AsyncCallback): void读取系统剪贴板内容,使用callback异步回调。
getData(): Promise读取系统剪贴板内容,使用Promise异步回调。
getDataSync(): PasteData读取系统剪贴板内容, 此接口为同步接口。

示例代码

import {BusinessError, pasteboard} from '@kit.BasicServicesKit';
// 获取系统剪贴板对象
let text = "test";
// 创建一条纯文本类型的剪贴板内容对象
let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, text);
// 将数据写入系统剪贴板
let systemPasteboard = pasteboard.getSystemPasteboard();
await systemPasteboard.setData(pasteData);
//从系统剪贴板中读取数据
systemPasteboard.getData().then((data) => {let outputData = data;// 从剪贴板数据中获取条目数量let recordCount = outputData.getRecordCount();// 从剪贴板数据中获取对应条目信息for (let i = 0; i < recordCount; i++) {let record = outputData.getRecord(i).toPlainText();console.log('Get data success, record:' + record);}  
}).catch((error: BusinessError) => {// 处理异常场景
})

最后呢

很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。

而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点

如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

在这里插入图片描述

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。

  • 《鸿蒙 (OpenHarmony)开发学习视频》
  • 《鸿蒙生态应用开发V2.0白皮书》
  • 《鸿蒙 (OpenHarmony)开发基础到实战手册》
  • OpenHarmony北向、南向开发环境搭建
  • 《鸿蒙开发基础》
  • 《鸿蒙开发进阶》
  • 《鸿蒙开发实战》

在这里插入图片描述

总结

鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。

并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿
1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/432958.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】Java中String、StringBuilder、StringJoiner详解

目录 引言 一、String 1.1 String的定义 1.1.1 直接赋值 1.1.2 new关键字创建 1.2 常用方法 1.3 字符串的不可变性 1.4 字符串内存的存储原理 二、StringBuilder 2.1 常用方法 2.2 动态扩容策略 2.3 使用场景 三、StringJoiner 3.1 构造方法 3.2 常用方法 3.3…

【图像处理】多幅不同焦距的同一个物体的平面图象,合成一幅具有立体效果的单幅图像原理(二)

实现多幅不同焦距图像合成一幅具有立体效果的图像可以使用以下算法和开源库&#xff1a; 实现算法 图像对齐 使用特征点匹配&#xff08;如 SIFT、SURF 或 ORB&#xff09;来对齐图像。利用 RANSAC 算法剔除离群点&#xff0c;估计变换矩阵。 深度图生成 基于图像的焦距和视角…

信息安全工程师(19)HASH函数与数字签名

一、Hash函数 1、定义 Hash函数&#xff0c;又称散列函数或哈希函数&#xff0c;是一种将任意长度的输入&#xff08;称为预映射或消息&#xff09;通过散列算法变换成固定长度输出&#xff08;称为散列值或哈希值&#xff09;的函数。这种转换是单向的&#xff0c;即不能从哈…

使用python爬取豆瓣网站?如何简单的爬取豆瓣网站?

1.对python爬虫的看法 首先说说我对python的看法&#xff0c;我的专业是大数据&#xff0c;我从事的工作是java开发&#xff0c;但是在工作之余&#xff0c;我对python又很感兴趣&#xff0c;因为我觉得python是一门很好的语言&#xff0c;第一&#xff1a;它可以用来爬取数据…

ROS与无人驾驶学习笔记(一)——ROS基本操作

文章目录 ※ 安装ubuntu 下载 创建虚拟机 安装系统 安装vmware tool 更新源 安装常用软件 ※ 安装ROS 设置软件更新 使用清华源安装 ros测试 认识ROS ROS特点 ROS系统实现 ROS安装 工作需要&#xff0c;转行做码农了。。。 大概是无人驾驶相关的&#xff0c;啥都不会。。。 看成…

arthas简单应用

背景说明 项目上某个接口响应时间过长&#xff0c;需要查看方法耗时情况进行优化 安装配置 访问下载页进行下载&#xff1a;下载 | arthas 调整文件位置进行解压缩 - 查看arthas帮助命令&#xff08;非必须&#xff0c;官网文档更详细&#xff09; C:\tools\arthas\4.0.1\b…

IvorySQL 3.4 来了

9 月 26 日&#xff0c;IvorySQL 3.4 发版。本文将带大家快速了解新版本特性。 IvorySQL 3.4 发版说明 IvorySQL 3.4 基于 PostgreSQL 16.4&#xff0c;修复了多个问题&#xff0c;并增强多项功能。 PostgreSQL 16.4 的变更 在未经授权时防止 pg_dump 执行&#xff0c;并引入一…

MMD模型一键完美导入UE5-VRM4U插件方案(一)

1、下载pmx模型 1、去模之屋官网下载MMD模型,模之屋 2、下载完成得到pmx和Texture文件 2、下载并启用VRM4U插件 1、下载VRM4U插件, VRM4U,点击Latest下载对应引擎版本 2、将插件放到Plugins目录,然后

Git GUI操作流程

1&#xff0c;点击运行 Gt GUI 2&#xff0c;界面如下 3&#xff0c;点击Creat new Repository或者在菜单栏点击Repository--new 4,点击Browse选择目录&#xff0c;点击create&#xff0c;创建本地git仓库 5&#xff0c;对应盘里生成一个.git文件&#xff0c;用于版本管理 6&am…

随记——机器学习

前言 本来有个500块钱的单子&#xff0c;用机器学习做一个不知道什么鸟的识别&#xff0c;正好有数据集&#xff0c;跑个小项目&#xff0c;过一下机器学习图像识别的流程&#xff0c;用很短的时间记录下来..... 一、数据预处理 将数据集分为训练集和测试集&#xff0c;直接…

基于SpringBoot校园失物招领系统设计与实现

文未可获取一份本项目的java源码和数据库参考。 本课题的作用、意义&#xff0c;在国内外的研究现状和发展趋势&#xff0c;尚待研究的问题 作用&#xff1a;本课题的目的是使失物招领信息管理清晰化&#xff0c;透明化&#xff0c;便于操作&#xff0c;易于管理。通过功能模…

vue3 选择字体的颜色,使用vue3-colorpicker来选择颜色

1、有的时候我们会用到颜色的选择器&#xff0c;像element-plus提供了&#xff0c;但是ant-design-vue并没有&#xff1a; 这个暂时没有看到&#xff1a; 但是Ant Design 5的版本有&#xff0c;应该不是vue的。 2、使用第三方提供的vue3-colorpicker&#xff1a;storybook/cli…

【Gitee自动化测试3】Git的本地使用,和在Gitee上使用

一. 创建版本库 存放项目&#xff0c;项目的删除更改&#xff0c;版本库都能够监控。 创建一个文件夹&#xff08;不要包含中文路径&#xff09;&#xff0c;右键选择Git Bash Here&#xff08;打开Git终端&#xff09; 输入git init 对文件夹进行版本库的初始化&#xff0c;…

【CSS】背景

background-color 颜色background-image 图像background-size 缩放background-repeat 平铺background-position 定位background-clip 裁剪区域background-origin 开始区域background-attachment 滚动方式 background-color 颜色 <style>div{width: 200px;height: 100px;…

LeetCode - 850 矩形面积 II

题目来源 850. 矩形面积 II - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个轴对齐的二维数组 rectangles 。 对于 rectangle[i] [x1, y1, x2, y2]&#xff0c;其中&#xff08;x1&#xff0c;y1&#xff09;是矩形 i 左下角的坐标&#xff0c; (xi1, yi1) 是该…

【机器学习】探索LSTM:深度学习领域的强大时间序列处理能力

目录 &#x1f354; LSTM介绍 &#x1f354; LSTM的内部结构图 2.1 LSTM结构分析 2.2 Bi-LSTM介绍 2.3 使用Pytorch构建LSTM模型 2.4 LSTM优缺点 &#x1f354; 小结 学习目标 &#x1f340; 了解LSTM内部结构及计算公式. &#x1f340; 掌握Pytorch中LSTM工具的使用. &…

【react案例】实现评论列表

1. 需求 展示评论列表实现删除功能 2.1 只有自己的评论才展示删除按钮 2.2 点击删除按钮&#xff0c;删除当前评论tab切换&#xff08;点击对应tab&#xff0c;对tab文案高亮处理&#xff09;评论高亮评论排序&#xff08;最新、最热&#xff09; 2. 实现思路 useState维护评…

【小程序】uniapp自定义图标组件可动态更换svg颜色

组件描述 通过图标名称加载对应svg&#xff0c;size参数调整图标大小&#xff0c;color参数调整图标颜色 解决思路&#xff1a; 存svg获svg&#xff0c;对象方式正则替换svg的fill值&#xff0c;不改变源文件&#xff0c;通过base64直接加载缓存svg源文件&#xff0c;避免重…

Android 通过自定义注解实现Activity间跳转时登录路由的自动拦截

应用场景 在Android 中部分软件需要登录才能使用&#xff0c;但是有的页面又不需要登录&#xff0c;Android不同于Web可以直接拦截重定向路由&#xff0c;因此如果在Android中如果需要检测是否登录&#xff0c;如果没登录跳转登录的话就需要再每个页面中判断&#xff0c;当然也…

Leetcode面试经典150题-39.组合总和

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同一个 数字可以 无限制重复被选取 。如…