本文的剪切复制粘贴事件只针对文本,URI 和 intent 不在讨论范围内。
实例代码实现了2个功能:
监听剪切复制粘贴事件;
获取剪切复制或粘贴的文本;
剪切复制
有2个方法监听剪切复制事件:剪切板和 EditText 的 onTextContextMenuItem() 方法。
二者的主要区别是:
剪切板是系统层面的全局性质的监听,而onTextContextMenuItem 只对某个 EditText 控件有效。
剪切板只能监听到剪切复制事件,而无法监听到粘贴事件,而 onTextContextMenuItem 能既能监听到剪切复制事件,又能监听粘贴事件;
方法一:剪切板
在这里啰嗦几句关于 Clipboard 的知识点:
剪切板不仅可以存文本,还可以存 URI 和 Intent;
剪切板上只保持对 PrimaryClip 的引用,即最新一次的剪切数据;
OnPrimaryClipChangedListener 回调只对剪切和复制操作有效,即只有剪切板数据增加时才调用 OnPrimaryClipChangedListener;
剪切板上有多个 ClipData 构成,每次剪切和复制事件都会产生一个 ClipData,ClipData 包含 ClipDescprition 和 若干个保存数据的 ClipData.Item;
监听剪切和复制事件,如果是文本则保存对应文本:
private void registerCutAndCopyEvents() {
final