剪贴板
Android 3.0 引入了使用ClipBoard Manager在应用程序内部之间进行完全复制和粘贴操作,剪贴板的获得如下:
ClipboardManager clipBoard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE)
   | 
 
剪贴板支持文本字符串,URI通常指向一个Content Provider项,Intent用于复制应用程序的快捷方式。
要想把数据添加到剪贴板上可以使用setPrimaryClip(new Clip);
复制
ClipData类提供了大量的方法用来创建一个ClipData:
使用newPaintText方法创建一个新的ClipData对象,该对象包含一个字符用于对当前的数据进行描述,并且把数据类型设置为MIMETYPE_TEXT_PLAIN.
ClipData newClip = ClipData.newPlainText("newClips", mSetClipEt.getText().toString());
  | 
 
对于基于Content Provider的项,可以使用newUri方法,指定一个Content Resolver,标签和待粘贴数据的URI
ClipData.newUri(getContentResolver(), "label", uri);
   | 
 
粘贴

粘贴自定义对象
读取自定义对象,并将其转换为字符串,写入剪切板:
MyData md = new MyData("kimifdw",26);  
  String baseToString ="";  
  ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();   try   {       ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);       objectOutputStream.writeObject(md);       baseToString = Base64.encodeToString(byteArrayOutputStream.toByteArray(), Base64.DEFAULT);       objectOutputStream.close();   }   catch(Exception e)   {       e.printStackTrace();   } 
  | 
 
读取剪切板的字符串,并将其转换为对象
byte[] base64ToString = Base64.decode(item.getText().toString(), Base64.DEFAULT);  
  ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(base64ToString);   try   {         ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);         MyData md = (MyData)objectInputStream.readObject();        objectInputStream.close();         txtView.setText(md.toString());   }   catch(Exception e)   {         e.printStackTrace();   } 
   | 
 
一个简单的例子
protected void onCreate(Bundle savedInstanceState) { 	super.onCreate(savedInstanceState); 	setContentView(R.layout.activity_main); 	mShowClipTv = (TextView) findViewById(R.id.showClip); 	mSetClipEt = (EditText) findViewById(R.id.setClip); 	mClipBtn = (Button) findViewById(R.id.clipBtn); 	mPasteBtn = (Button) findViewById(R.id.pasteBtn); 	clipBoard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE); 	mClipBtn.setOnClickListener(this); 	mPasteBtn.setOnClickListener(this); }
  public void onClick(View v) { 	switch (v.getId()) { 		case R.id.clipBtn: 		ClipData newClip = ClipData.newPlainText("newClips",mSetClipEt.getText().toString()); 		clipBoard.setPrimaryClip(newClip); 		Toast.makeText(MainActivity.this, "复制成功", 0).show(); 		break; 		case R.id.pasteBtn: 		if(clipBoard.getPrimaryClipDescription() 		.hasMimeType(ClipDescription 		.MIMETYPE_TEXT_PLAIN)) { 			Item item = clipBoard.getPrimaryClip().getItemAt(0); 			mShowClipTv.setText(item.getText()); 			Toast.makeText(MainActivity.this, "粘贴成功", 0).show(); 		}else{ 			Toast.makeText(MainActivity.this, "文本格式", 0).show(); 		} 		break; 		default:break; 	} }
  |