HarmonyOS 鸿蒙Next 求助api9 剪切板无效
HarmonyOS 鸿蒙Next 求助api9 剪切板无效
import http from ‘@ohos.net.http’;
import pasteboard from ‘@ohos.pasteboard’; //剪切板
import router from ‘@ohos.router’;
@Styles function funS() {
.border({ width: 1, color: “#f45632” })
.padding(10).margin(10)
}
let systemPasteboard = pasteboard.getSystemPasteboard();
@Entry
@Component
struct One {
build() {
Column() {
Button(‘点我复制’).onClick((event: ClickEvent) => {
let dataXml = ‘Hello World’;
let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, dataXml);
systemPasteboard.setData(pasteData).then((data) => {
console.info(‘复制成功:’, data);
}).catch((err) => {
console.error('复制失败: ’ + err.message);
});
})
Button(‘获取剪切板内容’).onClick((event: ClickEvent) => {
systemPasteboard.getData().then((pasteData) => {
console.log(‘pasteData=’, JSON.stringify(pasteData))
let text = pasteData.getPrimaryText();
console.log(‘text=’, JSON.stringify(text))
}).catch((err) => {
console.error('剪切失败: ’ + err.message);
})
})
}
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
这是完整的代码,刚开始测试的时候
let systemPasteboard = pasteboard.getSystemPasteboard();这部分是在每一个btn里面都重新定义了一个,未生效,所以全局定义
点击复制之后控制台显示:复制成功: undefined 返回的data是undefinded,官方文档中没有给出明确示范以及说明,但是这一步是走进了.then的
接下来点击获取按钮,
console.log(‘pasteData=’, JSON.stringify(pasteData)) 这一步打印 pasteData= {}
console.log(‘text=’, JSON.stringify(text)) 打印显示text=""
搜索论坛看到仅有的帖子说是设备缓存的问题,我使用的是本地模拟器,我把模拟器缓存清了甚至删除了重新下载也没用?对比别人的代码我没看出我写的问题,求助
API9的模拟器的剪贴板复制功能有问题,我也遇到了。因为暂时不是必需的,所以没解决。不过我想应该是模拟器的问题,如果条件允许,可以在远程真机、本地真机上测试下,应该可以找到问题。
可以参考如下代码:
import pasteboard from '@ohos.pasteboard';
@Entry
@Component
struct Test {
build() {
Column() {
Button(‘点我复制’).onClick((event: ClickEvent) => {
const pasteboardData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, ‘要复制的数据’)
const systemPasteboard = pasteboard.getSystemPasteboard()
systemPasteboard.setData(pasteboardData) // 将数据放入剪切板
systemPasteboard.getData().then((data) => {
if (data) {
console.log(‘Success’)
} else {
console.log(‘fail’)
}
})
})
}
}
}
<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>
针对HarmonyOS 鸿蒙Next中api9剪切板无效的问题,可能是由于权限设置不当或API版本兼容性问题导致。请确保在module.json5中正确配置了读取剪贴板的权限(如ohos.permission.read_pasteboard),并在代码中正确调用剪贴板API。同时,检查是否有其他库或框架与鸿蒙系统存在冲突。如果问题依旧没法解决,请加我微信,我的微信是itying888,以便进一步分析解决。