无法在java android中获取剪贴板数据



我正在java中的一个android项目上工作,我需要在一个活动中复制粘贴一些数据,但这里的问题是我能够设置主剪辑,但当我尝试访问primaryClip时,它返回false。我使用以下代码

设置Primary剪辑
ClipboardManager clipboard = (ClipboardManager) requireContext().getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("textData","12345");
clipboard.setPrimaryClip(clip);

我试图像这样访问

ClipboardManager clipboard = (ClipboardManager) getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard.hasPrimaryClip()) {
//This returning false
}

这里hasPrimaryClip()返回false,但是如果我打开任何文本编辑器应用程序并尝试粘贴它们,它将粘贴我设置为主要剪辑的数据。

如何解决这个错误?

尝试在剪切数据100毫秒后调用clipboard.hasPrimaryClip(),应该可以工作。

val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("label", "whatever")
clipboard.setPrimaryClip(clip)
Log.d(TAG, clipboard.primaryClip?.getItemAt(0).toString())

但是:

val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText("label", "whatever")
clipboard.setPrimaryClip(clip)
Handler().postDelayed({
Log.d(TAG, clipboard.primaryClip?.getItemAt(0).toString())
},100)

打印"whatever".

正如官方文档所说,如果应用程序不是默认的IME,则返回false。https://developer.android.com/reference/android/content/ClipboardManager hasPrimaryClip ()

最新更新