生也有涯,知也无涯。这篇文章主要讲述Android 复制文本内容到系统剪贴板(自由复制)相关的知识,希望能为你提供帮助。
直接上代码:(对应的类:android.content.ClipboardManager)
//获取剪贴板管理器: ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); // 创建普通字符型ClipData ClipData mClipData = https://www.songbingjia.com/android/ClipData.newPlainText("Label", "这里是要复制的文字"); // 将ClipData内容放到系统剪贴板里。 cm.setPrimaryClip(mClipData);
上面的代码就可以将文字放到剪贴板了,然后找个输入框“ 粘贴” 就行啦~
ps:API 11之前,复制到系统剪贴板是cm.setText(“ 复制的文字” ); 但这句已经失效了,在API11后对,对ClipboardManager进行了升级,改成cm.setPrimaryClip(mClipData),使之可以通过(ClipData)复制文本、Uri和Intent。正如上面示例;
***********************************************************************
如需自由复制TextView等控件的文字,只是要在该控件上加上这句就好了android:textIsSelectable="true",或者java代码加 setTextIsSelectable(true);效果如图:
文章图片
************************************************************************
下面详细介绍下:
(1)获取剪贴板管理器:
ClipboardManager mClipboardManager =(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
(2)创建能够存入剪贴板的ClipData对象(ClipData对象中包含一个或多个ClipData.Item对象):
A. 创建普通字符型ClipData:
ClipData mClipData =https://www.songbingjia.com/android/ClipData.newPlainText("Label", "Content"); //‘ Label’ 这是任意文字标签
B. 创建URL型ClipData:
ClipData.newRawUri("Label",Uri.parse("http://www.baidu.com"));
C. 创建Intent型ClipData:
注意:上面三种方法只在ClipData对象中创建了一个ClipData.Item对象,如果想向ClipData对象中添加多个Item应该通过ClipData对象的addItem()方法添加。
(3)将ClipData数据复制到剪贴板:
ClipboardManager.setPrimaryClip(ClipData对象);
(4)从剪贴板中获取ClipData数据:
ClipboardManager.getPrimaryClip();
【Android 复制文本内容到系统剪贴板(自由复制)】ps:普通字符串,URL和Intent三种数据使用情况:
(1)普通字符:就是普通字符串的剪切,复制,粘贴。
(2)URL:在复制的时候可以复制一个URL,这个URL可以是请求ContentProvider的URL,在粘贴的时候调用ContntProvider获取数据,并使用。
(3)Intent:如,在记事本应用中长按某一个记录本条目,这时会创建删除这个记事本的Intent,并添加到剪贴板,当用户将这个记事本条目拖到垃圾桶松开时,应用会从剪贴板中获取Intent并执行,这个记事本条目就被删除了。
推荐阅读
- android View实现变暗效果
- (转)Elasticsearch索引mapping的写入查看与修改
- mybatis如何根据mapper接口生成其实现类
- 关于Android原生Email的自己的一些认识
- cs:app 第二章homework
- Android下获取FPS的几种方法
- CENTOS7 下Android 开发- Android Studio安装
- Android - 简单listview
- Apache Spark 2.2.0 中文文档 - Submitting Applications | ApacheCN