应用中的“复制功能”如何实现##HarmonyOS应用开发##
很多应用都有一个“点击复制”的功能,这一功能在实际操作中非常便捷,这一功能的实现主要是通过Basic Services Kit(基础服务)中的“剪贴板服务”实现的。
代码如下:
async _Copy(text:string){ let pasteData = pasteboard.createData(pasteboard.MIMETYPE_TEXT_PLAIN, text); let systemPasteboard = pasteboard.getSystemPasteboard(); await systemPasteboard.setData(pasteData); hm.toast("已复制到剪贴板"); }
代码虽然很简单,但是以下几个点是需要注意和了解的:
- 剪贴板服务是包括 访问剪贴板 和 向剪贴板里写入数据这两个主要部分的,其中,一键黏贴一类的功能属于“访问剪贴板”,而“点击复制”的本质是向剪贴板里写入数据,所以官网推荐的使用”安全控件“就不适用于这个”点击复制“的功能了,同样的,根据官网文档:
“申请ohos.permission.READ_PASTEBOARD权限,ohos.permission.READ_PASTEBOARD是受限的user_grant(用户授权)权限,使用自定义控件的应用可以通过申请ohos.permission.READ_PASTEBOARD权限,在用户授权的场景下访问剪贴板内容。”
其实你不用申请权限的,因为根本没有访问剪贴板内容,只是往里面写内容而已,不是访问。
- 虽然我刚才一直强调,这个是“写入剪贴板”而不是“读取剪贴板”,但都是对“剪贴板”进行的操作,所以如果你想要去上架这个app的话,那么有两点要注意的,第一是隐私协议里必须包含关于剪贴板的部分,第二是即使实际上这个功能不需要授权,你也要让用户进行对剪贴板进行一次手动授权,并且这个授权尽量是放在“点击复制"的功能页面之前,否则很容易被审核驳回
基于上述的第二个问题……我最后采用了另一个方法,“长按复制”,但是请注意,不是所有的Text组件都可以去长按复制的,要想长按文字后能够弹出对应的复制选项的,需要在这个Text组件里加上这个属性
.copyOption(CopyOptions.LocalDevice)
如果是准备做跨设备复制的,就要把LocalDevice替换成CROSS_DEVICE
长按复制虽然说操作上比点击一下一键复制更加复杂,但在上架审核环节中更加方便
- 0回答
- 0粉丝
- 0关注
- OpenHarmony: 如何实现跨模块的页面跳转功能
- 如何实现防截屏功能
- OpenHarmony 如何实现防截屏功能
- 如何实现应用的屏幕自动旋转
- HarmonyOS中如何在类中调用全局的弹窗
- 鸿蒙开发:DevEcoStudio中那些实用的小功能
- HarmonyOs开发:组件如何实现属性的动态设置
- 【HarmonyOS】鸿蒙应用蓝牙功能实现 (三)
- 【HarmonyOS】鸿蒙应用蓝牙功能实现 (二)
- 【HarmonyOS】鸿蒙应用蓝牙功能实现 (一)
- 第四八课:HarmonyOS NEXT教育应用的开发:功能实现与案例探索
- 鸿蒙Next如何实现打开相册选图片功能?
- 如何将内容直接复制到剪贴板
- 第五四课:基于HarmonyOS Next的智能办公应用开发:功能实现与案例解析
- HarmonyOS如何实现Text根据对应的字符串改变Text中字符指定颜色?