场景介绍
[剪贴板]为开发者提供数据的复制粘贴能力。
当需要使用复制粘贴等功能时,例如:复制文字内容到备忘录中粘贴,复制图库照片到文件管理粘贴,就可以通过剪贴板来完成。
约束限制
- 剪贴板内容大小<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_APP
plainTextData.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 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿