zoukankan      html  css  js  c++  java
  • 剪切板 复制文本 ClipboardManager


    代码
    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_1new 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(thiscm.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() + " " + data.getItemAt(0).getText() + " " + 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并执行,这个记事本条目就被删除了。





  • 相关阅读:
    优化后的 google提供的汉字转拼音类(针对某些htc等手机的不兼容情况)
    运行期可以变动大小和尺寸的自定义控件、
    123
    动态创建Ⅱ
    动态创建Ⅰ
    delphi XE5皮肤的使用
    ActionBar
    zhizhensuibi---Source aplikasi database dengan delphi7
    chadang saidui
    30yong wanquan
  • 原文地址:https://www.cnblogs.com/baiqiantao/p/e8227ab8cbc1a6680b857c505bd42e74.html
Copyright © 2011-2022 走看看