android剪切板一些简单实用方法

来源:互联网 发布:手机身份证读卡器软件 编辑:程序博客网 时间:2024/05/17 18:17

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();
}


原创粉丝点击