ClipboardManager,ClipData 剪贴板

clip object可以有三种形式:

Text:文字字符串。

文字是直接放在clip对象中,然后放在剪贴板里;粘贴这个字符串的时候直接从剪贴板拿到这个对象,把字符串放入你的应用存储中。

URI:一个Uri 对象。

表示任何形式的URI。这种形式主要用于从一个content provider中复制复杂的数据。

复制的时候把一个Uri 对象放在一个clip对象中,然后再放在剪贴板里;粘贴的时候取出这个clip对象,得到Uri,把它解析为一个数据资源比如content provider,然后从资源中复制数据到应用存储中。

Intent: Intent对象。

这支持了复制应用快捷方式。

复制的时候把Intent对象放在clip对象中,再放入剪贴板;粘贴数据时,从clip对象中得到Intent对象,放入应用存储区域中。

剪贴板每次仅会持有一个clip对象,当应用放另一个clip对象进来时,前一个就消失了。


剪贴板的类

ClipboardManager

  ClipboardManager代表了系统的剪贴板,通过getSystemService(CLIPBOARD_SERVICE)获取。

  全名为android.text.ClipboardManager从API 11开始就废弃了。

  取而代之的是它的子类:android.content.ClipboardManager (since API Level 11)。

 

ClipData, ClipDescription, and ClipData.Item

  前面说的clip对象就是ClipData类的对象,其中包含了一个 ClipDescription对象和一个或多个ClipData.Item对象。

  ClipDescription对象中包含了一个数组,描述clip对象的MIME类型。

  ClipData.Item对象中包含文字、URI或者Intent数据。一个clip对象中可以包含一个或多个Item对象

 

比如你想要复制list中的多项数据,你可以为list中的每一项创建一个ClipData.Item对象,然后把它们放进一个ClipData对象中,这样就一次性把多项数据都放在了剪贴板中。

注意ClipData这个类是API 11才有的。

 

ClipData中的简洁方法

  ClipData类中有一些静态的简洁方法,用于创建只有一个ClipData.Item和一条简单描述( ClipDescription)的ClipData对象。

  newPlainText(label, text)返回ClipData对象,数据是文字text,描述是label,MIME类型是MIMETYPE_TEXT_PLAIN

  类似的有:

  newUri(resolver, label, URI)

  newIntent(label, intent)


复制到剪贴板

  1.首先,获取剪贴板服务:

ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);

  2.然后把数据放在ClipData对象中。

  对文字:

ClipData clip = ClipData.newPlainText("simple text","Hello, World!");

  对URI:

复制代码
private static final String CONTACTS = "content://com.example.contacts";
private static final String COPY_PATH = "/copy";
Uri copyUri = Uri.parse(CONTACTS + COPY_PATH + "/" + lastName);
ClipData clip = ClipData.newUri(getContentResolver(),"URI",copyUri);
复制代码

  对Intent:

复制代码
Intent appIntent = new Intent(this, com.example.demo.myapplication.class);
ClipData clip = ClipData.newIntent("Intent",appIntent);
复制代码

  3.把clip对象放在剪贴板中:

clipboard.setPrimaryClip(clip);

你可能感兴趣的:(ClipboardManager,ClipData 剪贴板)