Android 復制文本內容到系統剪貼板(自由復制)


直接上代碼:(對應的類: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對象中創建了一個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並執行,這個記事本條目就被刪除了。


免責聲明!

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



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