如何避免复制侦听器对 Android 中的粘贴做出反应?

How to avoid copy-listener reacts on paste in Android?

当用户将内容复制到剪贴板时,我想 运行 在我的应用程序中显示 Toast 消息。这就是为什么我在 activity:

中实现了这样一个监听器
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 也会显示,我希望这种情况发生仅当用户复制 文本时。我该如何解决?

我用模拟器试过你的例子,结果如你所愿。
文档说明如下:

Callback that is invoked by ClipboardManager when the primary clip changes.

如果这在您的测试设备上不起作用,您可以尝试在触发回调后保存剪贴板字符串,并在下次将其与当时的剪贴板进行比较。 如果两个字符串相同,则表示用户粘贴了剪贴板的文本,或者只是再次复制了相同的文本。
如果两个字符串不同,您可以只显示吐司。