有没有办法将Android剪贴板设置为null(表示剪贴板上没有项目)?

时间:2016-08-23 13:08:18

标签: java android copy clipboard paste

请仔细阅读,因为已经提出了类似的问题,但这是一个新问题。

这是设置。

首先,我知道我可以使用以下代码从剪贴板中读取(效果很好):

 private String readClipboard() {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) appContext.getSystemService(Context.CLIPBOARD_SERVICE);
        android.content.ClipData clip = clipboard.getPrimaryClip();
        if (clip != null && clip.getItemCount() > 0) {
            ClipData.Item item = clip.getItemAt(clip.getItemCount() - 1);
            return item.getText().toString();
        }
        return "";

    }

其次,我找到了一种方法来清空我在剪贴板上设置的项目,其中包含以下(不太正确)的代码:

  private void clearClipboard(){
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE);
         // you can set an empty string or set to null, same result
        //android.content.ClipData clip = android.content.ClipData.newPlainText("", "");
        android.content.ClipData clip = android.content.ClipData.newPlainText(null,null);
        clipboard.setPrimaryClip(clip);

    }

擦除上一个项目

该代码确实将空项目设置到剪贴板上,以便清除上一个项目。

不会从剪贴板中删除项目

但是,实际上并没有从剪贴板中删除所有项目。这意味着当用户长按文本框时,系统认为剪贴板上有一个项目(即使它是一个空字符串或空字符串),它显示如下:

paste android clipboard

在剪贴板上没有任何内容

这实际上是不正确的,因为我们真正想要的是清除所有项目,向用户表明剪贴板上没有任何内容

Google Android API?

API中是否有一些实际清除剪贴板的方法?我搜索了很多,找不到任何东西,但想知道我是否错过了它?或者,如果Google API忽略了这个?

2 个答案:

答案 0 :(得分:0)

在android dev copy & paste doc

您可以使用clipboard.hasPrimaryClip()

检查剪贴板是否为空

请参阅: 检测如果剪贴板中存在任何数据并检查是否为text-plain

获取"粘贴"的ID菜单项 MenuItem mPasteItem = menu.findItem(R.id.menu_paste);

如果剪贴板不包含数据,请禁用粘贴菜单项。 如果它确实包含数据,请确定您是否可以处理数据。

if (!(clipboard.hasPrimaryClip())) {

    mPasteItem.setEnabled(false);

    } else if (!(clipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))) {

        // This disables the paste menu item, since the clipboard has data but it is not plain text
        mPasteItem.setEnabled(false);
    } else {

        // This enables the paste menu item, since the clipboard contains plain text.
        mPasteItem.setEnabled(true);
    }
}

答案 1 :(得分:0)

通过Android上的API 28,我们可以:

ClipboardManager clipboard = (ClipboardManager)
     context.getSystemService(context.CLIPBOARD_SERVICE)

所以

clipboard.clearPrimaryClip ()

context是您自己的上下文,是this在您的活动中