HarmonyOS 鸿蒙Next 求助api9 剪切板无效

发布于 1周前 作者 ionicwang 来自 鸿蒙OS

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=""   

搜索论坛看到仅有的帖子说是设备缓存的问题,我使用的是本地模拟器,我把模拟器缓存清了甚至删除了重新下载也没用?对比别人的代码我没看出我写的问题,求助

5 回复
读取剪切板的内容需要权限吧,没权限读取的text是undefined

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>

看了下和我的代码唯一的区别就是把这部分systemPasteboard = pasteboard.getSystemPasteboard()放在createData后面,等会去试一下,感谢

针对HarmonyOS 鸿蒙Next中api9剪切板无效的问题,可能是由于权限设置不当或API版本兼容性问题导致。请确保在module.json5中正确配置了读取剪贴板的权限(如ohos.permission.read_pasteboard),并在代码中正确调用剪贴板API。同时,检查是否有其他库或框架与鸿蒙系统存在冲突。如果问题依旧没法解决,请加我微信,我的微信是itying888,以便进一步分析解决。

回到顶部