场景介绍
同一设备的应用程序 A、B 之间可以借助系统剪贴板服务完成简单数据的传递,即应用程序 A 向剪贴板服务写入数据后,应用程序 B 可以从中读取出数据。在满足分布式剪贴板服务的使用条件时,应用程序 A、B 也可以来自组网内的不同设备。
图1 剪贴板服务示意图
在使用剪贴板服务时,需要注意以下几点:
- 只有在前台获取到焦点的应用才有读取系统剪贴板的权限(系统默认输入法应用除外)。
- 写入到剪贴板服务中的剪贴板数据不会随应用程序结束而销毁。
- 对同一用户而言,写入剪贴板服务的数据会被下一次写入的剪贴板数据所覆盖。
- 如果设备满足分布式组网条件,且进行复制操作的设备打开了剪贴板分布式开关,未配置“仅在本地”标志位的剪贴板数据里的 MIME 类型为纯文本和 HTML 的内容可以被组网内其他打开了剪贴板分布式开关的设备粘贴出来。
- 在同一设备内,剪贴板单次传递内容不应超过 800KB。在分布式场景下多设备间传递时,每次传递内容不应超过 64KB。
接口说明
SystemPasteboard 提供系统剪贴板操作的相关接口,比如复制、粘贴、配置回调等。PasteData 是剪贴板服务操作的数据对象,一个 PasteData 由若干个内容节点(PasteData.Record)和一个属性集合对象(PasteData.DataProperty)组成。Record 是存放剪贴板数据内容信息的最小单位,每个 Record 都有其特定的 MIME 类型,如纯文本、HTML、URI、Intent。剪贴板数据的属性信息存在放 DataProperty 中,包括标签、时间戳、“仅在本地”标记位等。
- SystemPasteboard
SystemPasteboard 提供系统剪贴板服务的操作接口,比如复制、粘贴、配置回调等。
接口名 | 描述 |
---|---|
getSystemPasteboard(Context context) | 获取系统剪切板服务的对象实例。 |
getPasteData() | 读取当前系统剪贴板中的数据。 |
hasPasteData() | 判断当前系统剪贴板中是否有内容。 |
setPasteData(PasteData data) | 将剪贴板数据写入到系统剪贴板。 |
clear() | 判断当前系统剪贴板中是否有内容。清空系统剪贴板数据。 |