gpt4 book ai didi

Android clipboard.getText() 已弃用;那么如何获取其中的文本项?

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:29 25 4
gpt4 key购买 nike

这很好用,向我准确显示了最后放入 Android 剪贴板的字符串是什么,恰好是 euswcnmst

Log.w("clip", clipboard.getText().toString());

getText 已被弃用用于 clipboard 对象。

与此同时,如果我执行 Log.w("clip", clipboard.getPrimaryClip().toString());,我会得到这个,如图所示ClipData { text/plain "label"{T:euswcnmst} }

我看到了我想要的,假设这种格式总是用于字符串剪贴板项目,我可以使用 String 函数(查找 : 和后续的 } 并执行 substring) 以提取 euswcnmst,但这是一个 hack。

我应该做什么?

编辑

根据 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

如果剪贴板中的最后一个项目不是文本,上面的代码会给出这个错误:

java.lang.NullPointerException:尝试在空对象引用上调用接口(interface)方法“java.lang.String java.lang.CharSequence.toString()”

这是修复方法(我在下面添加了第三行):

if(   clip == null 
|| clip.getItemCount() == 0
|| clip.getItemCount() > 0 && clip.getItemAt(0).getText() == null
)
return; // ... whatever; just don't go to next line

最佳答案

请理解剪贴板并非纯粹用于文本。复杂的构造可以放置在剪贴板上,形式为 ClipData 对象中的 1 到 N 个 ClipData.Item 对象,您从 getPrimaryClip().

给定您的ClipData,调用getItemCount() 来确定项目的数量。对于您想尝试使用的任何项目,请在 ClipData 上调用 getItemAt() 以获取相应的 ClipData.Item。在该项目上,您可以调用 getText()coerceToText() 来尝试获取该项目的文本表示。

关于Android clipboard.getText() 已弃用;那么如何获取其中的文本项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37196571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com