问题描述
当用户将某些内容复制到剪贴板时,我想在我的应用程序中运行Toast消息。这就是为什么我在活动中实现了这样的侦听器的原因:
class MainActivity : AppCompatActivity() {
var mPrimarychangelistener = OnPrimaryClipChangedListener {
Toast.makeText(applicationContext,"You have copied something!",LENGTH_SHORT).show()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
val clipboard = this.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboard.addPrimaryClipChangedListener(mPrimarychangelistener)
}
// ...
}
问题在于,当从剪贴板粘贴某些文本时,Toast也会显示,我希望仅当用户复制文本时才会发生。我该如何解决?
解决方法
我在一个仿真器上尝试了您的示例,该示例可以正常工作。
该文档说以下内容:
当主剪辑更改时,由ClipboardManager调用的回调。
如果这在您的测试设备上不起作用,您可以尝试在触发回调后保存剪贴板字符串,然后下次将其与剪贴板进行比较。
如果两个字符串相同,则意味着用户要么粘贴剪贴板中的文本,要么只是再次复制了相同的文本。
然后,如果两个字符串不同,就可以显示吐司。