1

我想在 TextView 中启用复制粘贴。

我在 Android 文档中找到了这些非常好的解释:http: //developer.android.com/guide/topics/clipboard/copy-paste.html

但它仅从版本 11 开始有效 - 蜂窝!

我需要一些目前也适用于大多数用户的东西,这意味着它也必须适用于姜饼、froyo 和 eclair。

我用什么?

4

2 回答 2

3

使用ClipboardManager在包中找到的android.text。他们将其移至不同的包,因为他们开始支持剪切文本以外的内容,但为了向后兼容,您仍然可以在旧名称下使用它。

你仍然会得到类似的东西:

    ClipboardManager cm=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE);

    cm.setText("something");

这是一个演示这个的示例项目。

于 2012-04-30T14:37:36.250 回答
1

这些是在 Android 中将纯文本复制到剪贴板并从剪贴板粘贴纯文本的完全跨平台无异常的方法:

@SuppressLint("NewApi") @SuppressWarnings("deprecation")
public void copy(String plainText)
{
    if (android.os.Build.VERSION.SDK_INT < 11)
    {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        if (clipboard != null)
        {
            clipboard.setText(plainText);
        }
    }
    else
    {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        if (clipboard != null)
        {
            android.content.ClipData clip = android.content.ClipData.newPlainText("text", plainText);
            clipboard.setPrimaryClip(clip);
        }
    }
}

@SuppressLint("NewApi") @SuppressWarnings("deprecation")
public String paste()
{
    if (android.os.Build.VERSION.SDK_INT < 11)
    {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        if (clipboard != null)
        {
            return (String) clipboard.getText();
        }
    }
    else
    {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        if (clipboard != null && clipboard.getPrimaryClip() != null && clipboard.getPrimaryClip().getItemCount() > 0)
        {
            return (String) clipboard.getPrimaryClip().getItemAt(0).getText();
        }
    }
    return null;
}
于 2013-04-20T23:48:48.037 回答