1、ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
2、拷贝数据的做法:需要把你所要拷贝的内容作为String 赋给baseToString 即可。下面是copy文本数据:
ClipData cd = ClipData.newPlainText("label", baseToString);
clipboardManager.setPrimaryClip(cd);
拷贝URI数据:
Uri copyUri = Uri.parse(CONTACTS + COPY_PATH + "/" + "XiaoMa"); ClipData clipUri = ClipData.newUri(getContentResolver(),"URI",copyUri); clipboard.setPrimaryClip(clipUri)
拷贝intent数据:
Intent appIntent = new Intent(); Bundle bundle = new Bundle(); bundle.putInt("xiaoma", 3344258); bundle.putInt("yatou", 3344179); appIntent.putExtra("label", bundle); appIntent.setClass(ClipBoardDemoActivity.this, ReceiverClip.class); ClipData clipIntent = ClipData.newIntent("Intent",appIntent); clipboard.setPrimaryClip(clipIntent);
3、读取剪切板的数据: 这里获取的文本数据类型。 是ClipDescription.MIMETYPE_TEXT_PLAIN 类型。读取数据后,那么dataString 就是在剪切板上获取的数据。
if(clipboardManager.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))
{
ClipData cd = cm.getPrimaryClip();
Item item = cd.getItemAt(0);
String dataString = item.getText().toString();
}
如果数据类型是Intent :这里的类型为ClipDescription.MIMETYPE_TEXT_INTENT。
if (clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_INTENT)) { item = clipboard.getPrimaryClip().getItemAt(0); Intent intent = item.getIntent(); startActivity(intent);
如果类型是URI: 这里的类型是:ClipDescription.MIMETYPE_TEXT_URILIST
if (clipboard.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_URILIST)) { ContentResolver cr = getContentResolver(); ClipData cdUri = clipboard.getPrimaryClip(); item = cdUri.getItemAt(0); Uri uri = item.getUri(); if(uri != null){ String mimeType = cr.getType(uri); if (mimeType != null) { if (mimeType.equals(MIME_TYPE_..)) {
.....
4、在获取剪切板中数据的时候,我们通常要判断剪切板中是否有数据:
clipboardManager.hasPrimaryClip() 如果为true 则有数据。
5、如需要利用自定义对象来传值。则在利用剪切板时,须对对象进行转换。这里我们需要用到base64这个工具类。
//自定义一个对象
MyData md = new MyData("kimifdw",26);
//定义字符串
String baseToString ="";
//1.将对象转换成字符串
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();
}
.读取剪切板的字符串,并将其转换为对象
//将base64转换成toString 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(); textView.setText(md.toString()); } catch(Exception e){ e.printStackTrace(); }
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态