如果您只想将一些代码“复制并粘贴”到您的应用中,您可以使用以下代码。
#复制
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);
#粘贴
获取要粘贴的文本
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;
或
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
CharSequence textToPaste = clipboard.getPrimaryClip().getItemAt(0).getText();
} catch (Exception e) {
return;
}
或 Kotlin 中的相同:
val clipboard = (getSystemService(Context.CLIPBOARD_SERVICE)) as? ClipboardManager
val textToPaste = clipboard?.primaryClip?.getItemAt(0)?.text ?: return false
在光标位置插入
如果有选择,则选择将替换为粘贴文本。
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());
#注意事项
- 此答案假定您不再支持 pre-API 11。如果您支持,请查看编辑历史记录。
- 导入
android.content.ClipboardManager 和android.content.ClipData。
- 我以前只是将粘贴文本放在一行中,直到我发现 ClipData 有时会导致 NPE 崩溃。现在我要么使用 try/catch 块,要么更仔细地检查空值。