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

Unable to get the clipboard data in java android

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

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())

给出 null 但是:

    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)

打印“随便”。

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