这很好用,向我显示了最后一个放入Android剪贴板的字符串是什么,碰巧是euswcnmst
。Log.w("clip", clipboard.getText().toString());
但是clipboard
对象不推荐使用getText
。
同时,如果我使用Log.w("clip", clipboard.getPrimaryClip().toString());
,我会得到这个,和ClipData { text/plain "label" {T:euswcnmst} }
完全一样
我看到了我想要的内容,并且假设字符串剪贴板项总是使用这种格式,我可以使用String
函数(查找:
和后续的}
,然后执行substring
)来提取euswcnmst
,但这是一个技巧。
我该怎么办?
- 编辑**
根据Commonsware的回答,* 以下是 * 我应该做的事情:
ClipData clip = clipboard.getPrimaryClip();
if(clip == null || clip.getItemCount() == 0)
return; // ... whatever; just don't go to next line
String t = clip.getItemAt(0).getText().toString();
- 编辑2 *
如果剪贴板中的最后一个ITEM不是文本,则上面的代码将给出以下错误:
x1米11米1x
以下是修复方法(我在下面添加了第三行):
if( clip == null
|| clip.getItemCount() == 0
|| clip.getItemCount() > 0 && clip.getItemAt(0).getText() == null
)
return; // ... whatever; just don't go to next line
3条答案
按热度按时间iezvtpos1#
请理解剪贴板并不只是用于文本,复杂的结构可以放置在剪贴板上,在
getPrimaryClip()
中的ClipData
对象中包含1到N个ClipData.Item
对象。给定您的
ClipData
,调用getItemCount()
来确定项目的数量。对于您想要尝试使用的任何项目,在ClipData
上调用getItemAt()
来获取相应的ClipData.Item
。在该项目上,您可以调用getText()
或coerceToText()
来尝试获取该项目的文本表示。bfnvny8b2#
使用以下代码
k5hmc34c3#