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

 2023-09-05 阅读 91 评论 0

摘要:1、ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);2、拷贝数据的做法:需要把你所要拷贝的内容作为String 赋给baseToString 即可。下面是copy文本数据:ClipData cd = ClipData.newPlainText(&#

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

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/293.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息