【问题标题】:Unable to get the clipboard data in java android无法在java android中获取剪贴板数据
【发布时间】:2021-12-12 12:56:51
【问题描述】:

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

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,但是如果我打开任何文本编辑器应用程序并尝试粘贴它们,它将粘贴我设置为主要剪辑的数据。

如何解决这个错误?

【问题讨论】:

    标签: java android copy-paste clipboardmanager


    【解决方案1】:

    尝试在剪辑数据 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)
    

    打印“随便”。

    【讨论】:

    • 感谢您的回答,这解决了我的问题
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多