【发布时间】:2016-08-23 13:08:18
【问题描述】:
请仔细阅读此内容,因为有人提出了类似的问题,但这是一个新问题。
这是设置。
首先我知道我可以使用以下代码从剪贴板中读取(效果很好):
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);
}
是否擦除上一个项目
该代码确实在剪贴板上设置了一个空项目,以便清除前一个项目。
不从剪贴板中删除项目
但是,这实际上并没有从剪贴板中删除所有项目。这意味着当用户长按某个文本框时,系统会认为剪贴板上有一个项目(即使它是 null 或空字符串),它会显示如下:
在剪贴板上不显示任何内容
这实际上是不正确的,因为我们真正想要的是清除所有项目以向用户表明剪贴板上没有任何内容。
Google Android API?
API 中是否有一些方法可以真正清除剪贴板?我已经搜索了很多,找不到任何东西,但想知道我是否错过了它?或者如果 Google API 忽略了这一点?
【问题讨论】:
-
看the source,
setPrimaryClip()好像支持null。你试过吗? -
@CommonsWare 我也在看那个。我现在正在尝试。谢谢。我会让你知道。编辑:试过了。它似乎仍然表明剪贴板上有一个项目(弹出粘贴菜单)。
标签: java android copy clipboard paste