ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); // 将文本内容放到系统剪贴板里。 cm.setText(tvMsg.getText()); Toast.makeText(this, "复制成功,可以发给朋友们了。", Toast.LENGTH_LONG).show();
上面是过时的 现在用没有过时的 转载于 http://blog.sina.com.cn/s/blog_5da93c8f0102uxtb.html
和Window系统一样,Android也有剪切板(ClipboardManager)。
对应的类:
API 11之前: android.text.ClipboardManagerAPI 11之后: android.content.ClipboardManager
下面是代码 if (android.os.Build.VERSION.SDK_INT > 11) { android.content.ClipboardManager c = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
c.setPrimaryClip(ClipData.newPlainText("sinaweibo", buildShareCopyContent())); } else { android.text.ClipboardManager c = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); c.setText(activitioncode.getText()); } 1. 概述: 早期版本的Android剪切板只能复制文本(可以为复合文本)信息。在API 11后对ClipboardManager进行了升级,使之可以通过(ClipData)复制文本、Uri和Intent。
(注意:在Android11版本之后,原来利用剪切板传递数据使用的setText()和getText()方法被弃用了,只能使用ClipData对象来代替。) 2. 使用流程: (1)获取剪贴板管理器:ClipboardManager mClipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); (2)创建能够存入剪贴板的ClipData对象(ClipData对象中包含一个或多个ClipData.Item对象): A. 创建普通字符型ClipData:ClipData mClipData = ClipData.newPlainText("Label", "Content"); B. 创建URL型ClipData:ClipData.newRawUri("Label", Uri.parse("http://www.fishme.cn/")); 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中的数据。 3. 普通字符串,URL和Intent三种数据使用情况: (1)普通字符:就是普通字符串的剪切,复制,粘贴。 (2)URL:在复制的时候可以复制一个URL,这个URL可以是请求ContentProvider的URL,在粘贴的时候调用ContntProvider获取数据,并使用。 (3)Intent:如,在记事本应用中长按某一个记录本条目,这时会创建删除这个记事本的Intent,并添加到剪贴板,当用户将这个记事本条目拖到垃圾桶松开时,应用会从剪贴板中获取Intent并执行,这个记事本条目就被删除了。
使用样例
ClipData mClipData = ClipData.newPlainText("Label", getItem(position).getMsg()); android.content.ClipboardManager cm = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); // 将文本内容放到系统剪贴板里。 cm.setPrimaryClip(mClipData);