这工作得很好,准确地告诉我最后一个字符串是什么,放进了android剪贴板,它恰好是euswcnmst
Log.w("clip", clipboard.getText().toString());
但是getText对于clipboard对象是不推荐使用的。
同时,如果我这样做,我得到这个,正如所示
Log.w("clip", clipboard.getPrimaryClip().toString());
我知道我想要什么,假设这个格式总是用于字符串剪贴板项,我可以使用ClipData { text/plain "label" {T:euswcnmst} }函数(findString和后续的:和do})来提取substring,但这是一个技巧。
我该怎么办?
编辑
根据Commonware的回答,我应该做以下几点:

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
如果剪贴板中的最后一个项目不是文本,则上述代码将给出此错误:
euswcnmst
这是修复方法(我在下面添加了第三行):
if(   clip == null
   || clip.getItemCount() == 0
   || clip.getItemCount() > 0 && clip.getItemAt(0).getText() == null
  )
    return; // ... whatever; just don't go to next line

最佳答案

请理解剪贴板并非纯用于文本。复杂结构可以以1到nClipData.Item对象的形式放在剪贴板上,这些对象位于从ClipData获取的getPrimaryClip()对象中。
鉴于您的ClipData,请致电getItemCount()以确定项目数。对于要尝试使用的任何项,请在getItemAt()上调用ClipData,以获取相应的ClipData.Item。在该项上,可以调用getText()coerceToText()来尝试获取该项的文本表示形式。

07-24 15:32