android 清除所有剪贴板条目

8mmmxcuj  于 2023-02-17  发布在  Android
关注(0)|答案(5)|浏览(280)

在我运行Android 4.1.2的三星Tab3上,多个副本复制到剪贴板会产生一个包含每个副本的剪贴板,这可以通过上滑键盘底部的一个按钮看到。
我想通过编程方式删除所有这些副本,但是ClipboardManager似乎没有提供这样做的方法。如何删除已复制到剪贴板的所有内容?
谢谢你,
克里斯

new9mtju

new9mtju1#

ClipboardManager clipService = (ClipboardManager)activity.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("", "");
clipService.setPrimaryClip(clipData);

bhmjp9jg

bhmjp9jg2#

来自API 28

ClipboardManager mCbm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
mCbm.clearPrimaryClip()
r1zk6ea1

r1zk6ea13#

我不认为你可以。听起来像三星写了一个剪贴板扩展程序,可以监视剪贴板事件并保留所有内容的副本。
如果(用户)不通过UI与历史列表交互,就无法访问历史。
一种可能的解决方法:如果历史列表是受限/回收种类(即限制在10个,新项目覆盖旧项目),那么你可以通过重复发送空字符串(或无害的非重复字符串,如'empty 1','empty 2'等)来有效地删除它。无论你做什么,你最终都会覆盖一些用户认为重要的东西,并且用户会恨你

64jmpszr

64jmpszr4#

使用您提到的管理器,您可以使用setText为它设置一个空字符串以清除剪贴板。

ClipboardManager mClipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
mClipboardManager.setText("");
s4n0splo

s4n0splo5#

要实际删除条目(而不是通过setPrimaryClip()将它们与空字符串交换),使用API级别28+:

ClipboardManager clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
while (clipboardManager.hasPrimaryClip()) {
    clipboardManager.clearPrimaryClip()
}

相关问题