Android: Copy to clipboard selected text from a TextView
TextView tv;String stringYouExtracted = tv.getText().toString();int startIndex = tv.getSelectionStart();int endIndex = tv.getSelectionEnd();stringYouExtracted = stringYouExtracted.subString(startIndex, endIndex);ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);clipboard.setText(stringYouExtracted);
EDIT (The previous is the full answer, but I ran into my answer by mistake so I would like to add):
With Newer APIs, change the last two lines to :
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboard.setText(stringYouExtracted);} else { android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", stringYouExtracted); clipboard.setPrimaryClip(clip);}
"Copied Text"
is a title for your COPY entity in newer APIS
you can do it this way:
ClipboardManager myClipboard = myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);ClipData myClip;EditText editText = (EditText) findViewById(R.id.editText3);int min = 0;int max = editText.getText().length();if (editText.isFocused()) { final int selStart = editText.getSelectionStart(); final int selEnd = editText.getSelectionEnd(); min = Math.max(0, Math.min(selStart, selEnd)); max = Math.max(0, Math.max(selStart, selEnd));}// here is your selected textfinal CharSequence selectedText = editText.getText().subSequence(min, max);String text = selectedText.toString();// copy to clipboardmyClip = ClipData.newPlainText("text", text);myClipboard.setPrimaryClip(myClip);
Replace EditText with TextView