通过标题你就可以猜到,本篇博客并不会介绍Android中数据复制和粘贴的源码实现流程、逻辑架构等,我只是根据google提供的文档稍微整理一下,平常基本上是用不到的,有什么不对的地方,劳烦各位大声指出!!
文本的复制和粘贴将由ClipboardManager进行管理(默认的InputView是支持粘贴复制的),它提供多种数据类型的拷贝和粘贴,包括文本、复杂的数据结构、二进制数据流等;其中剪贴板是有系统持有的,剪贴板在同一时刻只能持有一个ClipData,当然一个ClipData里面可以包含过个ClipData.Item,其实真实的数据由ClipData.Item持有的;在使用Intent作为ClipData的数据体时,被粘贴的应用将由于这个Intent指向的应用的快捷键!!!(没有试过)
在Android系统中专门有一个系统服务负责数据的复制和粘贴的,他就是ClipBoardManager,当然了,这个Manager只是对内部的Service进行封装之后暴露给开发者的接口。获取ClipBoardManager的实例对象很简单,Android系统中几乎所有的Manager实例都是通过这种方法获取的:
ClipboardManager clipboard = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
一个ClipData包含一个ClipDescription和至少一个ClipData.Item对象。ClipDescription包含带粘贴的元数据和一个关于有效MIME的数组,ClipData.Item.coerceToText()使用此方法可以强行将剪贴板上的数据转换成一个CharSequence对象,其中Intennt会被转换成一个Intent的URI对象,然后通过使用URI转换成字符串。
复制文本:
ClipboardManager clipboard = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("simple text","Hello, World!");
clipboard .setPrimaryClip(clip);
粘贴文本:
ClipboardManager clipboard = (ClipboardManager) getSystemService(Cont