HarmonyOS 鸿蒙Next如何实现双击后复制文本框的文本呢?
HarmonyOS 鸿蒙Next如何实现双击后复制文本框的文本呢?
Text('我是一段文本) .padding({left: 16, top:8, bottom:8, right:16}) .borderRadius(20) .backgroundColor("#0C182431") .height(40) .copyOption(CopyOptions.InApp)
像这样的组件,如何在双击之后复制里面的文本呢?
应该是做不到,原因是普通开发者没有这个权限
根据官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/app-permission-mgmt-overview-V5
得知 system_grant是(系统授权)
根据官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/restricted-permissions-V5
得知,复制需要
权限名称:ohos.permission.READ_PASTEBOARD
权限类型:授权方式: 系统授权(system_grant)
根据官方文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/pastebutton-V5
按官方的意思,为了安全(如果你写代码偷偷调复制功能,对用户来说无感知,那这被定义不安全)你想复制粘贴,需要用《使用粘贴控件》组件
可能是我表述的不明白,其实我应用本身不需要读取剪贴板,我希望的是用户双击这个文本框之后就可以实现复制到文本框中的内容,而不是应用或者开发者读取文本框的内容
那你可以这样
import { pasteboard } from ‘@kit.BasicServicesKit’; import { promptAction } from ‘@kit.ArkUI’;
function copyText(text: string) { const pasteboardData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, text); const systemPasteboard = pasteboard.getSystemPasteboard(); systemPasteboard.setData(pasteboardData); // 将数据放入剪切板 promptAction.showToast({ message: ‘复制成功’ }); }
@Entry @Component struct Page01 { @State info: string = ‘我是一段文本’
build() {
Column() {
Text(this.info)
.padding({
left: 16,
top: 8,
bottom: 8,
right: 16
})
.borderRadius(20)
.backgroundColor("#0C182431")
.height(40)
// .copyOption(CopyOptions.InApp)
.gesture(
GestureGroup(GestureMode.Exclusive,
TapGesture({ count: 2 }).onAction((event?: GestureEvent) => {
console.info(双击了
)
copyText(this.info)
})
)
)
}
.height(‘100%’)
.width(‘100%’)
}
}
谢谢,这个方案是有效的
可以复制