我们有剪贴板的功能,麻烦帮忙提供一个使用的 Demo。我们找到了 api setData 没问题,getData 获取不到数据
案例如下:
private async aa(callbackContext: CallbackContext) {
// 构建一个自定义类型的剪贴板内容对象
let pasteData: pasteboard.PasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, 'aaaaaaaa');
let prop: pasteboard.PasteDataProperty = pasteData.getProperty();
prop.shareOption = pasteboard.ShareOption.LOCALDEVICE;
pasteData.setProperty(prop);
// 获取系统剪贴板对象
let systemPasteBoard: pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
// 将数据写入系统剪贴板
await systemPasteBoard.setData(pasteData).then(() => {
// 在这里执行成功时的回调操作
CordovaLog.i(Constants.TAG, "Data set successfully!" )
callbackContext.success()
}).catch((err: BusinessError) => {
// 执行失败
CordovaLog.e(Constants.TAG, `Failed to set pastedata. Code: ${err.code}, message: ${err.message}`)
callbackContext.errorByJson(err)
});
setTimeout(() => {
this.bb()
}, 5000)
}
bb () {
// 获取系统剪贴板对象
let systemPasteBoard: pasteboard.SystemPasteboard = pasteboard.getSystemPasteboard();
// 读取系统剪贴板内容
systemPasteBoard.getData((err: BusinessError, data: pasteboard.PasteData) => {
if (err) {
console.error(`Failed to get pastedata. Code: ${err.code}, message: ${err.message}`);
return;
}
// 对pastedata进行处理,获取类型,个数等
let recordCount: number = data.getRecordCount(); // 获取剪贴板内record的个数
let types: string = data.getPrimaryMimeType(); // 获取剪贴板内数据的类型
let primaryText: string = data.getPrimaryText(); // 获取剪贴板内数据的内容
console.log('----粘贴 pasteboard', data)
console.log('---typeof', typeof data)
console.log('-----粘贴recordCount',recordCount)
console.log('-----粘贴types',types)
console.log('-----粘贴primaryText',primaryText)
});
}
这样获取到的结果是 undefined
可参考如下代码:
从api11开始,对读取剪贴板接口增加读权限校验ohos.permission.READ\_PASTEBOARD