Android:从文本视图复制到剪贴板所选文本

Android:从文本视图复制到剪贴板所选文本,android,copy,textview,clipboard,Android,Copy,Textview,Clipboard,是否可以仅将所选文本从TextView UI组件复制到剪贴板 我捕获了长按事件并将全文复制到剪贴板,但现在我想指定要从TextView复制的选择的开始和结束 多谢各位 TextView tv; String stringYouExtracted = tv.getText().toString(); int startIndex = tv.getSelectionStart(); int endIndex = tv.getSelectionEnd(); stringYouExtracted = s

是否可以仅将所选文本从TextView UI组件复制到剪贴板

我捕获了长按事件并将全文复制到剪贴板,但现在我想指定要从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);

编辑(前面是完整答案,但我无意中找到了我的答案,因此我想添加)

对于较新的API,将最后两行更改为:

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);
}
if(android.os.Build.VERSION.SDK\u INT

“复制的文本”
是较新API中复制实体的标题

您可以这样做:

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 text
final CharSequence selectedText = editText.getText().subSequence(min, max);
String text = selectedText.toString();


// copy to clipboard
myClip = ClipData.newPlainText("text", text);
myClipboard.setPrimaryClip(myClip);

将EditText替换为TextView

如果您可以使用EditText而不是TextView,您可能会实现这一点。但是如何通过长按TextView来指定开始索引和结束索引?@ASP它应该可以在所有设备上工作,但我确实没有100%测试它。如果没有,请告诉我们work@SherifelKhatib但是android.os.Build.VERSION\u CODES.HONEYCOMB不支持以下版本。不管怎样,“其他”部分对我来说都是完美的。感谢4 DAT您如何从命令行运行“else”部分,使用类似于:
service call clipboard 2 i32 1 i32 0 s16“Hi there”