React Native-剪贴板中更改的侦听器

时间:2019-02-16 22:25:31

标签: javascript react-native listener clipboard

有没有一种方法可以为React Native中的剪贴板数据更改添加侦听器? 基本上取决于用户是否已在剪贴板中复制了某些内容,无论是在应用程序内部还是在后台应用程序,我都想执行一些方法。

1 个答案:

答案 0 :(得分:4)

React native无法为您提供侦听此类事件的方法,但是您有两种方法:一种可以部分工作但非常简单,而另一种可以按需编写并且可以按需工作,但也需要更多的努力。

您可以使用setInterval创建一个计时器,该计时器将调用Clipboard。getString()(请记住,它是异步的,因此应将其包装在await或使用{{ 1}}),并将其与从上一次调用中收到的值进行比较。如果值不同,则用户复制了一些内容。如果您的应用程序在后台运行,则此方法将不起作用-为此,您应将.then(...)替换为this library之类的后台服务。而且,如果值相同,例如,它将不会捕获副本。如果用户首先复制了文本“ sample”,然后再次进行复制,则不会检测到该文本,因为字符串是相同的。

您可能应该选择的解决方案是创建一个本机模块,该模块将分别为iOS和Android实现本机侦听器。在Android上,您可以像这样绑定到ClipboardManagersetInterval

OnPrimaryClipChangedListener

在iOS上,您可以像这样使用UIPasteboardvoid setupListener(){ final ClipboardManager clipboardMgr = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE); clipboardMgr.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() { public void onPrimaryClipChanged() { String contents = clipboardMgr.getText().toString(); // do something with it, e.g. emit an event to JS } }); }

UIPastedboardChangedNotification