从Android中的剪贴板粘贴

时间:2011-12-23 14:55:48

标签: java android clipboard

我编写了一个代码,用于将计算器中的答案复制到剪贴板,然后关闭计算器并打开另一个窗口。答案应该使用代码粘贴在这里:

    textOut2= (TextView) findViewById(R.id.etInput1);
    final ClipboardManager clipBoard= (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
    textOut2.setText(clipBoard.getText());

但它永远不会奏效。这可能是一个错误吗?附:我知道什么文本被复制,因为我可以使用长按粘贴,但我想自动完成。是否可以为复制的文本指定特定名称?因为我可以更容易地粘贴单词,因为我有很多不同的TextView

3 个答案:

答案 0 :(得分:11)

  

public CharSequence getText()   自:API等级11   不推荐使用此方法。   请改用getPrimaryClip()。这将检索主剪辑并尝试将其强制转换为字符串。

String textToPaste = null;

ClipboardManager clipboard = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);

if (clipboard.hasPrimaryClip()) {
    ClipData clip = clipboard.getPrimaryClip();

    // if you need text data only, use:
    if (clip.getDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))
        // WARNING: The item could cantain URI that points to the text data.
        // In this case the getText() returns null and this code fails!
        textToPaste = clip.getItemAt(0).getText().toString();

    // or you may coerce the data to the text representation:
    textToPaste = clip.getItemAt(0).coerceToText(this).toString();
}

if (!TextUtils.isEmpty(textToPaste))
     ((TextView)findViewById(R.id.etInput1)).setText(textToPaste);

您可以通过ClipData.Item添加包含文字的其他ClipData.addItem()项,但无法识别它们。

答案 1 :(得分:2)

试试这个

textOut2= (TextView) findViewById(R.id.etInput1);
final ClipboardManager clipBoard= (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
String temp = new String;
temp = clipBoard.getText().toString();
textOut2.setText(temp);

答案 2 :(得分:1)

在 Kotlin 中:

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

        binding.<your EditText camelCase id>.setText(textToPaste)

Fragment 内部:getSystemService() 是Context 类上的一个方法,需要先调用Context。可以通过使用 getContext() 或 getActivity() - Activity 也是一个上下文。

this.activity.getSystemService(...)
this.context.getSystemService(...)

或者:

activity.getSystemService(...)
context.getSystemService(...)

另外记住只有安全 (?.) 或非空断言 (!!.) 调用。