博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Clipboard 详解
阅读量:6899 次
发布时间:2019-06-27

本文共 1437 字,大约阅读时间需要 4 分钟。

Android 提供了一个强大的剪贴板框架,用于复制和粘贴。 它支持文本、二进制数据流或其它复杂的数据。

Android 剪贴板框架如图 copy_paste_framework

从图中可以看出,Android 剪贴板框架主要涉及到 ClipboardManager 、 ClipData 、 ClipData.Item 、 ClipDescription 这四个类。

关于这四个类的简介如下:

ClipboardManager 是系统全局的剪贴板对象,通过 context.getSystemService(CLIPBOARD_SERVICE) 获取。

ClipData ,即 clip 对象,在系统剪贴板里只存在一个,当另一个 clip 对象进来时,前一个 clip 对象会消失。
ClipData.Item ,即 data item,它包含了文本、 Uri 或者 Intent 数据,一个 clip 对象可以包含一个或多个 Item 对象。通过 addItem(ClipData.Item item) 可以实现往 clip 对象中添加 Item。
文本:文本是直接放在 clip 对象中,然后放在剪贴板里;粘贴这个字符串的时候直接从剪贴板拿到这个对象,把字符串放入你的应用存储中。
Uri:对于复杂数据的剪贴拷贝并不是直接将数据放入内存,而是通过 Uri 来实现,毕竟 Uri 的中文名叫:统一资源标识符。通过 Uri 能定位手机上所有资源,这当然能实现拷贝了,只不过需要做一些额外的处理工作。(对于 Uri 不是很理解,如有误,望指正~)
Intent:复制的时候 Intent 会被直接放入 clip 对象,这相当于拷贝了一个快捷方式。
ClipDescription ,即 clip metadata,它包含了 ClipData 对象的 metadata 信息。可以通过 getMimeType(int index) 获取(一般 index = 0,有兴趣的可以去看下 ClipData 的源码)。MimeType 一般有以下四种类型:

// 对应 ClipData newPlainText(label, text) 的 MimeType

public static final String MIMETYPE_TEXT_PLAIN = "text/plain";
// 对应 ClipData.newHtmlText(label, text, htmlText) 的 MimeType
public static final String MIMETYPE_TEXT_HTML = "text/html";
// 对应 ClipData.newUri(cr, label, uri) 的 MimeType
public static final String MIMETYPE_TEXT_URILIST = "text/uri-list";
// 对应 ClipData.newIntent(label, intent) 的 MimeType
public static final String MIMETYPE_TEXT_INTENT = "text/vnd.android.intent";

但 MIMETYPE_TEXT_URILIST 有点特殊,当 Uri 为 content://uri 时,它会转为具体的 MimeType ,后面会有例子讲到。

转载地址:http://yycdl.baihongyu.com/

你可能感兴趣的文章
匿名管道
查看>>
多线程——继承Thread类别
查看>>
file_operations结构体解析 1
查看>>
表格中的正文如何排版?
查看>>
解决Mac OS下安装MyEclipse报错:Your system does not have sufficient memory to support MyEclipse...
查看>>
让Ecshop网店系统用户自动登陆
查看>>
UVA 1291 Dance Dance Revolution(DP)
查看>>
WCF 数据服务 4.5
查看>>
java14 处理流
查看>>
数据挖掘相关概念
查看>>
HDU2159 研发费用背包
查看>>
OpenGL ES2.0入门详解
查看>>
简单返回顶部代码及注释说明
查看>>
Codeforces 839A Arya and Bran【暴力】
查看>>
SwaggerUI+SpringMVC——构建RestFul API的可视化界面
查看>>
剑指offer 高速排序
查看>>
Tomcat8 启动中提示 org.apache.catalina.webresources.Cache.getResource Unable to add the resource...
查看>>
5.1 抽象化
查看>>
Android 使用easeui 3.0 集成环信即时通讯 我踩过的坑
查看>>
wps相关问题
查看>>