请仔细阅读,因为已经提出了类似的问题,但这是一个新问题。
这是设置。
首先,我知道我可以使用以下代码从剪贴板中读取(效果很好):
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);
}
擦除上一个项目
该代码确实将空项目设置到剪贴板上,以便清除上一个项目。
不会从剪贴板中删除项目
但是,实际上并没有从剪贴板中删除所有项目。这意味着当用户长按文本框时,系统认为剪贴板上有一个项目(即使它是一个空字符串或空字符串),它显示如下:
在剪贴板上没有任何内容
这实际上是不正确的,因为我们真正想要的是清除所有项目,向用户表明剪贴板上没有任何内容。
Google Android API?
API中是否有一些实际清除剪贴板的方法?我搜索了很多,找不到任何东西,但想知道我是否错过了它?或者,如果Google API忽略了这个?
答案 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
在您的活动中