android開發 -- 複製文字內容到系統剪貼簿(自由複製)
阿新 • • 發佈:2019-01-06
直接上程式碼:(對應的類:android.content.ClipboardManager)
上面的程式碼就可以將文字放到剪貼簿了,然後找個輸入框“貼上”就行啦~//獲取剪貼簿管理器: ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); // 建立普通字元型ClipData ClipData mClipData = ClipData.newPlainText("Label", "這裡是要複製的文字"); // 將ClipData內容放到系統剪貼簿裡。 cm.setPrimaryClip(mClipData);
ps:API 11之前,複製到系統剪貼簿是cm.setText(“複製的文字”);但這句已經失效了,在API11後對,對ClipboardManager進行了升級,改成cm.setPrimaryClip(mClipData),使之可以通過(ClipData)複製文字、Uri和Intent。正如上面示例;
***********************************************************************
如需自由複製TextView等控制元件的文字,只是要在該控制元件上加上這句就好了android:textIsSelectable="true",或者java程式碼加 setTextIsSelectable(true);效果如圖:
************************************************************************
下面詳細介紹下:
(1)獲取剪貼簿管理器:
ClipboardManager mClipboardManager =(ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
(2)建立能夠存入剪貼簿的ClipData物件(ClipData物件中包含一個或多個ClipData.Item物件):A. 建立 普通字元型ClipData:
ClipData mClipData =ClipData.newPlainText("Label", "Content"); //‘Label’這是任意文字標籤
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();
ps:普通字串,URL和Intent三種資料使用情況:
(1)普通字元:就是普通字串的剪下,複製,貼上。
(2)URL:在複製的時候可以複製一個URL,這個URL可以是請求ContentProvider的URL,在貼上的時候呼叫ContntProvider獲取資料,並使用。
(3)Intent:如,在記事本應用中長按某一個記錄本條目,這時會建立刪除這個記事本的Intent,並新增到剪貼簿,當用戶將這個記事本條目拖到垃圾桶鬆開時,應用會從剪貼簿中獲取Intent並執行,這個記事本條目就被刪除了。