gpt4 book ai didi

javascript - React Native - 剪贴板变化的监听器

转载 作者:行者123 更新时间:2023-11-29 16:32:26 24 4
gpt4 key购买 nike

有没有办法在 React Native 中为剪贴板数据的变化添加监听器?基本上取决于用户是否在他们的剪贴板中复制了一些东西,无论是在应用程序内部还是在后台的应用程序中,我都想执行一些方法。

最佳答案

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

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

您可能应该选择的解决方案是创建一个 native 模块,分别为 iOS 和 Android 实现 native 监听器。在 Android 上,您可以绑定(bind)到 ClipboardManagerOnPrimaryClipChangedListener,像这样:

void 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
}
});
}

在 iOS 上你可以使用 UIPasteboardUIPastedboardChangedNotification,像这样:

func listener(sender: NSNotification){
// do something
}

func setupListener(){
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("listener:"), name: UIPasteboardChangedNotification, object: nil)
}

关于javascript - React Native - 剪贴板变化的监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54728263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com