我们知道,windows系统中有剪贴板,Android中也有剪切板(ClipboardManager)

在android api 11之前,ClipboardManager全称(父类):android.text.ClipboardManager

在android api11之后,ClipboardManager全称(子类):android.content.ClipboardManager

早期版本的Android剪切板只能复制文本信息,

在api 11 之后,对ClipboardManager进行了升级,它可以通过(ClipData对象) 复制文本,URI,Intent。所以说android api 11之前版本中的,用来传递的数据使用的setText()和getText()方法被弃用了。,只能用ClipData对象来代替。

使用流程:

1.获取剪切板管理区

ClipboardManager mClipbord=(ClipboardManager)getSystemService(ClipBoard_service);

2.创建能够存入剪贴板的ClipData数据。使用ClipData类的静态方法(ClipData对象中可以包含一个或者多个ClipData.Item对象)

A。创建普通的字符型ClipData : 返回ClipData对象。,数据是text,描述是Lable,MIME类型是MimeType_text_plain

newPlainText(Label,text)

ClipData mclipData=ClipData.newPlainText("Label","Content");

B。 创建URL类型的ClipData

ClipData.newRawUri("Label",Uri.parse(http://www.baidu.com));

C。创建Intent类型的ClipData

ClipData.newIntent("Label",intent);

上面的三种方法只是在ClipData对象中创建了一个ClipData.Item对象,如果想往ClipData对象中添加多个Item项,应该使用ClipData对象的addItem()方法添加。

3.将ClipData数据复制到剪贴板:

clipboardmanager.setPrimaryClip(ClipData对象);

4.从剪贴板中获取ClipData数据:
clipboardmanager.getPrimaryClip();

5.解析ClipData中的数据。

从剪贴板中获得ClipData数据后,

需要把ClipData中的ClipData.Item都取出来呀。

剪贴板中的非text数据可以通过ClipData.Item.coerceToText()方法转为text处理。

第一:检查item项中是不是包含text,如果有,就会返会text数据。

第二,如果不包含text。之后看是否有URI。

如果这个URI是content URI,并且provider返回文字流,coerceToText()就返回该文字流;如果provider不返回文字流,或者这个URI根本不是content URI,coerceText()方法会返回URI的表达式,即 Uri.toString()。

第三,最后,如果这个item即不包含text,也不是URI,。那么它应该包含Intent。coerceToText()方法会把Intent对象转换为一个Intent URI返回,和Intent.toUri(URI_intent_scheme)一样。

一些介绍:

普通字符串,URL,Intent三种数据的使用情况。

(1)普通字符串:就是普通的字符串的剪切,复制,粘贴。

(2)URL:在复制的时候可以复制一个URL。这个URL可以是请求ContentProvider的URL,在粘贴的时候调用ContentProvider获取数据,并使用。

(3)Intent:在记事本应用中长按某一个记录本条目,这时会创建删除这个记事本的Intent。并添加懂啊剪贴板,当用户把这个记事本条目拖扯到垃圾桶时,应用会从剪贴板中获取Intent并执行,这个记事本条目就会被删除。

一些代码:

1.获取剪贴板服务。

ClipboardManager clipboard=(ClipboardManager)getSystemService(Context.clipboard_service);

2.把数据放入到ClipData对象中

text数据(文字)

ClipData clip = ClipData.newPlainText("simple text","hello,world!");

URI数据

private static final String Contacts="content://com.example.contacts";

private static final String Copy_path="/copy";

Uri copyUri=Uri.parse(Contacts+Copy_path+"/"+lastName);

ClipData clip=ClipData.newUri(getContentResolver(),"URI",copyUri);

Intent数据

Intent appIntent=new Intent(this,com.example.demo.myapplication.class);

ClipData clip=ClipData.newIntent("Intent",appIntent);

3.把ClipData对象放入到剪贴板中

clippboardmanamer.setPrimaryclip(clip);

实验的一些截图:

效果截图:



Android中的复制粘贴?相关推荐

  1. Android中的复制粘贴

    The Clipboard Framework 当使用clipboard framework时,把数据放在一个剪切对象(clip object)里,然后这个对象会放在系统的剪贴板里. clip obj ...

  2. Android EditText禁止复制粘贴

    1,自定义EditText package com.example.ui; import android.annotation.SuppressLint; import android.content ...

  3. 【转】vi编辑器中如何复制粘贴文本

    转自:http://old.blog.edu.cn/user2/icethawless/archives/2006/1489681.shtml vi中多个文件相互之间的复制.粘贴功能简介 大家在vi编 ...

  4. 如何优雅的在ubuntu终端中使用复制粘贴

    如何优雅的在ubuntu终端中使用复制粘贴 文章目录 前言 更改终端里面的复制粘贴命令 修改鼠标按键映射 介绍 安装 依赖 编译安装 配置文件 前言 安装了ubuntu20.4 后发现终端里面的复制粘 ...

  5. Android实现一键复制粘贴,兼容低版本系统(api 11以下)

    Android实现一键复制粘贴,兼容低版本系统(api11以下) /**         * 实现文本复制功能         * @param content         * @return t ...

  6. 在vim中快速复制粘贴多行

    在vim中快速复制粘贴多行 用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴.  这样做: 1. 将光标移动到要复制的文本开始的地方,按v进入可视模式. 2. 将光标移动到要复制的文本的结束的 ...

  7. JavaScript 中的复制粘贴操作

    在日常业务开发,比如复制后增加版权信息,点击复制,等场景中需要进行复制粘贴的操作,以下是几种实现方案. Clipboard API Clipboard API 提供了响应剪贴板命令(剪切.复制和粘贴) ...

  8. word中遇到复制粘贴无法使用的解决方法

    通常我们使用MathType的时候,会在word中遇到复制粘贴无法使用的解决方法: 1.在MathType的安装目录下找到MathPage.wll(在MathPage文件夹中)和MathType Co ...

  9. 怎样解决在Linux系统中的复制粘贴问题

    为什么通用的复制粘贴Ctrl+C.Ctrl+V快捷键不能在Linux中使用? Linux系统中,默认情况下Ctrl+C键用于向在前台运行的命令发送中断信号,即通常会停止正在运行的命令.故Ctrl+C. ...

最新文章

  1. arm编译安装openCV整理
  2. JZOJ 4.1 B组 删数
  3. shell 从1加到100
  4. java序列化异常_Java|序列化异常StreamCorruptedException的解决方法
  5. 经典算法题每日演练——第九题 优先队列
  6. UML用例图总结来源于网络
  7. 随机生成六位不重复数值
  8. php超市结算,超市物品结算简易程序代码
  9. UNIX标准化及实现之UNIX标准化、UNIX系统实现、标准和实现的关系以及ISO C标准头文件...
  10. centos7 安装java 8_CentOS 7.8下安装完美安装配置Rosetta
  11. idea ---- 快捷键
  12. 20200209:匹配子序列的单词数(leetcode792)
  13. java instanceof运算符_Java 中的instanceof 运算符
  14. 《Java程序员全攻略:从小工到专家》连载二:IT行情分布
  15. R语言安装包的几种方法
  16. 话单分析 之 含小数保留9位
  17. c语言实训自我总结报告,C++实训总结报告
  18. 笑傲江湖 琴箫合奏之曲
  19. linux查看pv数据量,linux下计算网站PV量、UV量
  20. LabVIEW应用程序在Windows版本之间的字体变化

热门文章

  1. python 大智慧股池_自设股票池(擒牛) 大智慧股票池
  2. 远程桌面控制老家电脑进行修复和设置
  3. HTMLCSS三列布局
  4. 新手怎么可以学好网页设计?
  5. MBC打造韩流主题公园,虚拟现实成看点
  6. SAM BAM 和 CRAM
  7. Nacos系列5---源码刨析naming服务的核心开关类SwitchDomain刨析
  8. Windows 10 版本 21H1不推送的手动更新方法
  9. 【stm32】引脚高低电平、上拉输入与下拉输入
  10. 固态硬盘-机械硬盘-选择win-ubuntu兼容格式