Android copy/paste from clipboard manager Android copy/paste from clipboard manager android android

Android copy/paste from clipboard manager


you can copy and paste text using following code :

  • for copy :

    ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);ClipData clip = ClipData.newPlainText("your_text_to_be_copied");clipboard.setPrimaryClip(clip);
  • And paste it :

    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);String pasteData = ""; // If it does contain data, decide if you can handle the data.if (!(clipboard.hasPrimaryClip())) {} else if (!(clipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))) {    // since the clipboard has data but it is not plain text} else {    //since the clipboard contains plain text.    ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);    // Gets the clipboard as text.    pasteData = item.getText().toString(); }

for more details check here


If you just want to "copy and paste" some code into your app, you can use the following.

#Copy

String textToCopy = etCodeWindow.getText().toString();ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);ClipData clip = ClipData.newPlainText(null, textToCopy);if (clipboard == null) return;clipboard.setPrimaryClip(clip);

#Paste

Get the text to paste

ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);if (clipboard == null) return;ClipData clip = clipboard.getPrimaryClip();if (clip == null) return;ClipData.Item item = clip.getItemAt(0);if (item == null) return;CharSequence textToPaste = item.getText();if (textToPaste == null) return;

or

ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);try {    CharSequence textToPaste = clipboard.getPrimaryClip().getItemAt(0).getText();} catch (Exception e) {    return;}

or the same in Kotlin:

val clipboard = (getSystemService(Context.CLIPBOARD_SERVICE)) as? ClipboardManagerval textToPaste = clipboard?.primaryClip?.getItemAt(0)?.text ?: return false

Inserting it at the cursor position

If there is a selection then the selection will be replaced with the paste text.

int start = Math.max(myEditText.getSelectionStart(), 0);int end = Math.max(myEditText.getSelectionEnd(), 0);myEditText.getText().replace(Math.min(start, end), Math.max(start, end),            textToPaste, 0, textToPaste.length());

#Notes

  • This answer assumes that you are no longer supporting pre-API 11. If you are then see the edit history.
  • Import android.content.ClipboardManager and android.content.ClipData.
  • I used to just get the paste text in a one liner until I discovered that ClipData was giving a NPE crash sometimes. Now I would either use a try/catch block or check more carefully for nulls.


a short summary of above after honeycomb >= API 13:

public String readFromClipboard() {    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);    if (clipboard.hasPrimaryClip()) {        android.content.ClipDescription description = clipboard.getPrimaryClipDescription();        android.content.ClipData data = clipboard.getPrimaryClip();        if (data != null && description != null && description.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))             return String.valueOf(data.getItemAt(0).getText());    }    return null;}