无法在java android中获取剪贴板数据
Posted
技术标签:
【中文标题】无法在java android中获取剪贴板数据【英文标题】:Unable to get the clipboard data in 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,但是如果我打开任何文本编辑器应用程序并尝试粘贴它们,它将粘贴我设置为主要剪辑的数据。
如何解决这个错误?
【问题讨论】:
【参考方案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()
【讨论】:
以上是关于无法在java android中获取剪贴板数据的主要内容,如果未能解决你的问题,请参考以下文章