代码

public class MainActivity extends ListActivity {
    private EditText tv_info;
    private ClipboardManager cm;//剪贴板管理器  
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String[] array = { "复制文本-废弃", "获取复制的文本-废弃", "复制内容-新API", "获取文本内容", "获取URI", "获取Intent", };
        tv_info = new EditText(this);// 将内容显示在TextView中
        tv_info.setTextColor(Color.RED);
        tv_info.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
        tv_info.setPadding(20, 40, 20, 40);
        getListView().addFooterView(tv_info);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new ArrayList<String>(Arrays.asList(array))));
        cm = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    }
    @SuppressWarnings("deprecation")
    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        switch (position) {
        case 0:
            cm.setText(tv_info.getText().toString().trim());
            break;
        case 1:
            Toast.makeText(this, cm.getText().toString().trim(), Toast.LENGTH_SHORT).show();
            break;
        case 2:
            //创建能够存入剪贴板的ClipData对象
            ClipData mClipData = ClipData.newPlainText("label", "包青天");//创建纯文本字符型ClipData,支持5种形式
            mClipData.addItem(new ClipData.Item(tv_info.getText().toString().trim()));//添加纯文本
            mClipData.addItem(new ClipData.Item(Uri.parse("http://www.baidu.cn/")));//添加URL型ClipData
            mClipData.addItem(new ClipData.Item(new Intent(Settings.ACTION_SETTINGS)));//添加Intent型ClipData
            cm.setPrimaryClip(mClipData);
            break;
        case 3:
            //获取存入剪贴板的ClipData对象,要自己保证获取到的数据类型是正确的类型
            ClipData data = cm.getPrimaryClip();
            tv_info.setText("ClipData.Item数量为:" + data.getItemCount() + "\n" + data.getItemAt(0).getText() + "\n" + data.getItemAt(1).getText());
            break;
        case 4:
            Uri uri = cm.getPrimaryClip().getItemAt(2).getUri();
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
            break;
        case 5:
            startActivity(cm.getPrimaryClip().getItemAt(3).getIntent());
            break;
        }
    }
}

简介

和Window系统一样,Android也有剪切板(ClipboardManager)。
对应的类:
API 11之前: android.text.ClipboardManager
API 11之后: android.content.ClipboardManager

早期版本的Android剪切板只能复制【文本】信息(可以为复合文本)。在API 11后对ClipboardManager进行了升级,使之可以通过ClipData复制文本、Uri和Intent。在Android11版本之后,原来利用剪切板传递数据使用的setText()和getText()方法被弃用了,推荐使用ClipData对象来代替。

普通字符串,URL和Intent三种数据使用情况:
(1)普通字符:就是普通字符串的剪切,复制,粘贴。
(2)URL:在复制的时候可以复制一个URL,这个URL可以是请求ContentProvider的URL,在粘贴的时候调用ContntProvider获取数据,并使用。
(3)Intent:如,在记事本应用中长按某一个记录本条目,这时会【创建】删除这个记事本的Intent,并添加到剪贴板,当用户将这个记事本条目拖到垃圾桶松开时,应用会从剪贴板中获取Intent并执行,这个记事本条目就被删除了。

剪切板 复制文本 ClipboardManager的更多相关文章

  1. 重新想象 Windows 8 Store Apps (40) - 剪切板: 复制/粘贴文本, html, 图片, 文件

    [源码下载] 重新想象 Windows 8 Store Apps (40) - 剪切板: 复制/粘贴文本, html, 图片, 文件 作者:webabcd 介绍重新想象 Windows 8 Store ...

  2. js 实现复制到剪切板 复制按钮兼容各大浏览器

    zeroclipboard官网:https://github.com/zeroclipboard/ZeroClipboard 下载压缩包,得到两个“ZeroClipboard.js”和“ZeroCli ...

  3. vnc viewer中开启剪切板复制内容到ubuntu系统中

    说明,本机是ubuntu16,安装的vnc server 是x11vnc,具体安装方法请看之前博文.ubuntu16.4中开启vncserver进行远程桌面 vncviewer on Windows ...

  4. Android系统剪切板

    Android系统剪贴板 复制字符串到系统剪切板 /** * 复制文本到剪切板 * * @param text * @return */ @SuppressWarnings("depreca ...

  5. 小菜学习Winform(六)剪切板和拖放复制

    前言 在做winform项目的时候有时候会用到复制粘贴,在.net中提供了Clipboard类来操作剪切板,我们来看下. clipbrd.exe clipbrd是系统剪切板程序,但是在vista及以上 ...

  6. 兼容安卓和ios实现一键复制内容到剪切板

    实现代码如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <m ...

  7. C# 使用WinApi操作剪切板Clipboard

    前言: 最近正好写一个程序,需要操作剪切板 功能很简单,只需要从剪切板内读取字符串,然后清空剪切板,然后再把字符串导入剪切板 我想当然的使用我最拿手的C#来完成这项工作,原因无他,因为.Net框架封装 ...

  8. 背水一战 Windows 10 (102) - 应用间通信: 剪切板

    [源码下载] 背水一战 Windows 10 (102) - 应用间通信: 剪切板 作者:webabcd 介绍背水一战 Windows 10 之 应用间通信 剪切板 - 基础, 复制/粘贴 text ...

  9. Python访问剪切板

    剪切板访问工具 ----pyperclip he purpose of Pyperclip is to provide a cross-platform Python module for copyi ...

随机推荐

  1. Ruby自学笔记(一)— 基本概况

    之前一直想要多看看RESTful Service相关的东西,找到一本相关的书,但是里面的代码都是用Ruby写的,虽然知道编程语言都是类似的,但是看到一些陌生的语法,还是有些摸不着头脑,所以最近终于下定 ...

  2. Oracle问题解决(sqlplus无法登陆)

    命令行 sqlplus 无法登陆,常常是用户名/密码错误.监听配置错误或未启动.数据库服务名丢失等等原因. 用户名/密码错误 找到自己设的密码 这全靠自己创建数据库实例时,备份或记住相关信息 若最后没 ...

  3. JSP 表单request内容

    1. 表单request内容的获取 2. request.setCharacterEncoding("utf-8")对request内容进行编码 3. fullformreques ...

  4. DB2 SQL RR/RS/CS/UR四个级别《转载》

    1.RR隔离级别:在此隔离级别下, DB2会锁住所有相关的纪录.在一个SQL语句执行期间,所有执行此语句扫描过的纪录都会被加上相应的锁.具体的锁的类型还是由操作的类型来决定,如果是读取,则加共享锁:如 ...

  5. java 动态代理学习(Proxy,InvocationHandler)

    前几天看到java的动态代理机制,不知道是啥玩意,然后看了看.死活不知道 invoke(Object proxy, Method m, Object[] args)种的proxy是个什么东西,放在这里 ...

  6. Arrays.sort的粗略讲解

    排序算法,基本的高级语言都有一些提供.C语言有qsort()函数,C++有sort()函数,java语言有Arrays类(不是Array).用这些排序时,都可以写自己的排序规则. Java API对A ...

  7. Java中的移位操作符

    记住所有的移动位数,针对的都是补码来讲的,所以要先将十进制整数转换成补码后,然后再来进行移位操作 移位操作 还要注意类型的约束条件,例如int,移动范围是0-31位,所以看补码只能看最后五位,这才是有 ...

  8. 设置Tomcat默认界面

    修改配置文件:         首先,修改$tomcat/conf/server.xml文件.      在server.xml文件中,有一段如下:      ……      <engine   ...

  9. 日志式文件系统:SGI的xfs, Reiserfs, IBM的jfs, ext3fs

    日志文件(Log files)是包含系统消息的文件,包括内核.服务.在系统上运行的应用程序等.不同的日志文件记载不同的信息.日志文件系统比传统的文件系统安全,因为它用独立的日志文件跟踪磁盘内容的变化. ...

  10. Balance(01背包)

    Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 9163   Accepted: 5617 Description Gigel ...