首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android从剪贴板管理器复制/粘贴

Android从剪贴板管理器复制/粘贴
EN

Stack Overflow用户
提问于 2013-10-04 17:01:51
回答 7查看 56K关注 0票数 25

是否可以发送过去的命令,以便将文本粘贴到当前聚焦的编辑文本中。场景:

  1. 后台服务侦听通知(完成)
  2. 收到通知时,需要将文本复制到剪贴板(完成)
  3. 将文本粘贴到任何当前关注的字段,如果不可能,则放弃粘贴命令。

我知道如何用ClipboardManager复制文本,但我不知道如何粘贴它。

EN

回答 7

Stack Overflow用户

发布于 2013-10-04 17:22:16

您可以使用以下代码复制和粘贴文本: :

  • for文案:

粘贴剪贴板= (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);ClipboardManager ClipData = ClipData.newPlainText("your_text_to_be_copied");clipboard.setPrimaryClip(clip);

  • And粘贴它:

ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);String pasteData = "";//如果包含数据,则决定是否可以处理这些数据。if (!(clipboard.hasPrimaryClip(){} if (!(clipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))) { //因为剪贴板有数据,但它不是纯文本} else {//因为剪贴板包含纯文本。ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);//获取文本形式的剪贴板。pasteData = item.getText().toString();}

有关更多详细信息,请查看here

票数 41
EN

Stack Overflow用户

发布于 2017-03-31 10:16:51

如果你只是想将一些代码“复制并粘贴”到你的应用程序中,你可以使用以下方法。

#复制

代码语言:javascript
复制
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);

#粘贴

获取要粘贴的文本

代码语言:javascript
复制
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;

代码语言:javascript
复制
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
    CharSequence textToPaste = clipboard.getPrimaryClip().getItemAt(0).getText();
} catch (Exception e) {
    return;
}

或者在Kotlin中也是如此

代码语言:javascript
复制
val clipboard = (getSystemService(Context.CLIPBOARD_SERVICE)) as? ClipboardManager
val textToPaste = clipboard?.primaryClip?.getItemAt(0)?.text ?: return false

将其插入到光标位置的

如果有选择,则选择内容将替换为粘贴文本。

代码语言:javascript
复制
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-API11,那么你可以看到

  • android.content.ClipboardManager
    • 只是在一个一行中粘贴文本,直到我发现ClipData有时会崩溃。现在,我要么使用try/catch块,要么更仔细地检查空值。
票数 18
EN

Stack Overflow用户

发布于 2014-06-07 22:00:15

在honeycomb >= API 13之后,对以上内容做一个简短的总结:

代码语言:javascript
复制
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;
}
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19177231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档