Android中的复制粘贴?

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yjhdxflqm/article/details/51152898

我们知道,windows系统中有剪贴板,Android中也有剪切板(ClipboardManager)

在android api 11之前,ClipboardManager全称(父类):android.text.ClipboardManager

在android api11之后,ClipboardManager全称(子类):android.content.ClipboardManager

早期版本的Android剪切板只能复制文本信息,

在api 11 之后,对ClipboardManager进行了升级,它可以通过(ClipData对象) 复制文本,URI,Intent。所以说android api 11之前版本中的,用来传递的数据使用的setText()和getText()方法被弃用了。,只能用ClipData对象来代替。

使用流程:

1.获取剪切板管理区

ClipboardManager mClipbord=(ClipboardManager)getSystemService(ClipBoard_service);

2.创建能够存入剪贴板的ClipData数据。使用ClipData类的静态方法(ClipData对象中可以包含一个或者多个ClipData.Item对象)

A。创建普通的字符型ClipData : 返回ClipData对象。,数据是text,描述是Lable,MIME类型是MimeType_text_plain   

   newPlainText(Label,text)

  ClipData mclipData=ClipData.newPlainText("Label","Content");

B。 创建URL类型的ClipData 

ClipData.newRawUri("Label",Uri.parse(http://www.baidu.com));

C。创建Intent类型的ClipData

ClipData.newIntent("Label",intent);

上面的三种方法只是在ClipData对象中创建了一个ClipData.Item对象,如果想往ClipData对象中添加多个Item项,应该使用ClipData对象的addItem()方法添加。


3.将ClipData数据复制到剪贴板:

clipboardmanager.setPrimaryClip(ClipData对象);


4.从剪贴板中获取ClipData数据:
clipboardmanager.getPrimaryClip();


5.解析ClipData中的数据。

从剪贴板中获得ClipData数据后,

需要把ClipData中的ClipData.Item都取出来呀。

剪贴板中的非text数据可以通过ClipData.Item.coerceToText()方法转为text处理。

第一:检查item项中是不是包含text,如果有,就会返会text数据。

第二,如果不包含text。之后看是否有URI。

如果这个URI是content URI,并且provider返回文字流,coerceToText()就返回该文字流;如果provider不返回文字流,或者这个URI根本不是content URI,coerceText()方法会返回URI的表达式,即 Uri.toString()。

第三,最后,如果这个item即不包含text,也不是URI,。那么它应该包含Intent。coerceToText()方法会把Intent对象转换为一个Intent URI返回,和Intent.toUri(URI_intent_scheme)一样。


一些介绍:

普通字符串,URL,Intent三种数据的使用情况。

(1)普通字符串:就是普通的字符串的剪切,复制,粘贴。

(2)URL:在复制的时候可以复制一个URL。这个URL可以是请求ContentProvider的URL,在粘贴的时候调用ContentProvider获取数据,并使用。

(3)Intent:在记事本应用中长按某一个记录本条目,这时会创建删除这个记事本的Intent。并添加懂啊剪贴板,当用户把这个记事本条目拖扯到垃圾桶时,应用会从剪贴板中获取Intent并执行,这个记事本条目就会被删除。

一些代码:

1.获取剪贴板服务。

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

2.把数据放入到ClipData对象中

text数据(文字)

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.把ClipData对象放入到剪贴板中

clippboardmanamer.setPrimaryclip(clip);

实验的一些截图:




效果截图:



展开阅读全文

没有更多推荐了,返回首页