剪切板 復制文本 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() + "\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並執行,這個記事本條目就被刪除了。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM