我需要从剪贴板中获取复制的数据。我使用以下代码:
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clipData: ClipData? = clipboardManager.primaryClip
clipData?.let { textView.text = clipData.getItemAt(0).text }如果我在onCreate()或onResume()回调中使用这段代码,我总是从剪贴板得到null。
但是如果我调用这个代码:
textView.post {
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clipData: ClipData? = clipboardManager.primaryClip
clipData?.let { textView.text = clipData.getItemAt(0).text }
}我得到复制的字符串。
因此,我的结论是,剪贴板等待所有视图都呈现出来。
为什么剪贴板需要等待渲染所有视图?也可能是剪贴板在等待其他东西
发布于 2020-12-27 22:15:19
这是因为当你尝试从剪贴板获取primaryClip时,你的应用程序应该处于焦点位置。
所有视图都必须设置并绑定到活动,这就是为什么您必须在view.post { }的帮助下将函数添加到UI队列
该更改是在API 29??https://developer.android.com/about/versions/10/privacy/changes#clipboard-data中添加的。
https://stackoverflow.com/questions/65465361
复制相似问题