Android剪切板(ClipboardManager) 複製文本

轉載至:http://blog.sina.com.cn/s/blog_5da93c8f0102uxtb.html

和Window系統一樣,Android也有剪切板(ClipboardManager)。
對應的類:
API 11之前: android.text.ClipboardManager
API 11之後: android.content.ClipboardManager
下面是代碼

if (android.os.Build.VERSION.SDK_INT > 11) {
android.content.ClipboardManager c = (android.content.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
c.setPrimaryClip(ClipData.newPlainText(“sinaweibo”, buildShareCopyContent()));

} else {
android.text.ClipboardManager c = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
c.setText(activitioncode.getText());
}
1. 概述: 早期版本的Android剪切板只能複製文本(可以爲複合文本)信息。在API 11後對ClipboardManager進行了升級,使之可以通過(ClipData)複製文本、Uri和Intent。
(注意:在Android11版本之後,原來利用剪切板傳遞數據使用的setText()和getText()方法被棄用了,只能使用ClipData對象來代替。)

  1. 使用流程:

(1)獲取剪貼板管理器:ClipboardManager mClipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

(2)創建能夠存入剪貼板的ClipData對象(ClipData對象中包含一個或多個ClipData.Item對象):

A. 創建普通字符型ClipData:ClipData mClipData = ClipData.newPlainText(“Label”, “Content”);

B. 創建URL型ClipData:ClipData.newRawUri(“Label”, Uri.parse(“http://www.fishme.cn/“));

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中的數據。

  1. 普通字符串,URL和Intent三種數據使用情況:

(1)普通字符:就是普通字符串的剪切,複製,粘貼。
(2)URL:在複製的時候可以複製一個URL,這個URL可以是請求ContentProvider的URL,在粘貼的時候調用ContntProvider獲取數據,並使用。
(3)Intent:如,在記事本應用中長按某一個記錄本條目,這時會創建刪除這個記事本的Intent,並添加到剪貼板,當用戶將這個記事本條目拖到垃圾桶鬆開時,應用會從剪貼板中獲取Intent並執行,這個記事本條目就被刪除了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章