
基于@ohos.pasteboard实现剪贴板功能
场景描述
本模块主要提供管理系统剪贴板的能力,为系统复制、粘贴功能提供支持。系统剪贴板支持对文本、HTML、URI、Want、PixelMap等内容的操作。
场景一:手动点击按钮进行复制粘贴
使用场景:安全控件会在点击粘贴按钮时给业务临时授予ohos.permission.SECURE_PASTE权限,因此使用安全控件访问剪贴板的业务不会受此次非兼容性变更的影响,暂未使用安全控件的业务也可以通过使用安全控件访问剪贴板内容。
效果图
实现方案
1. 创建一个粘贴按钮组件*(PasteButton),并设置点击事件处理函数。
2. 调用pasteboard.getSystemPasteboard().getData方法,获取系统剪贴板中的数据。
3. 调用systemPasteboard.setData方法,将指定的文本内容设置到系统剪贴板中。
核心代码
场景二:读取系统剪贴板数据并实现页面跳转
使用场景:在应用A复制口令(使用按钮复制),打开应用b后直接读取到系统剪贴板里面的口令,然后跳转到口令里面的页面。
当前可申请剪贴板读取权限的场景与功能:
1. 2in1设备上的应用均可申请。
2. 其它设备符合以下场景可申请:
a. 银行卡号复制:银行类应用需要读取剪贴板中的银行卡号自动生成卡片。
b. 口令复制:应用需要读取剪贴板中特定格式口令,自动打开应用内对应页面。
在其他场景下,请应用使用粘贴控件读取剪贴板数据,使用方式参考:场景一。
实现方案
1. 在module.json5中按需声明ohos.permission.READ_PASTEBOARD权限以访问剪贴板。
2. 在进行权限申请之前,需要先检查当前应用程序是否已经被授予权限。可以通过调用checkAccessToken()方法来校验当前是否已经授权,如果已经授权,则可以直接访问目标操作,否则需要进行下一步操作,即向用户申请授权。
3. 通过调用reqPermissionsFromUser( )接口向用户申请授权。
4. 当权限被授予时,尝试从系统剪贴板获取数据,如果成功则从pasteData中获取主要文本数据。如果权限未被授予,则根据this.permission_state的状态来决定是否向用户请求权限或者进行其他处理。
5. 页面跳转,参考:构建第二个页面。
核心代码
