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

2024-03-24

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


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

您可以创建一个计时器setInterval那会调用剪贴板 https://facebook.github.io/react-native/docs/clipboard.getString() (只要记住它是异步的,所以你应该用await or use .then(...))并将其与上次调用收到的值进行比较。如果值不同,则用户复制了某些内容。如果您的应用程序处于后台,此方法将不起作用 - 为此,您应该替换setInterval具有像这样的后台服务这个图书馆 https://github.com/ocetnik/react-native-background-timer。此外,如果值相同,它不会捕获副本,例如如果用户首先复制文本“sample”然后再次复制,它不会检测到它,因为字符串是相同的。

您可能应该选择的解决方案是创建一个本机模块,分别为 iOS 和 Android 实现本机侦听器。在 Android 上,您可以绑定到剪贴板管理器 https://developer.android.com/reference/android/content/ClipboardManager's OnPrimaryClipChangedListener, 像那样:

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 上你可以使用UIP纸板 https://developer.apple.com/documentation/uikit/uipasteboard's UIPastedboardChangedNotification, 像那样:

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

func setupListener(){
    NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("listener:"), name: UIPasteboardChangedNotification, object: nil)
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

React Native - 剪贴板中更改的监听器 的相关文章

  • 为什么 iife 在一个简单的例子中不起作用?

    我不明白为什么函数表达式调用不起作用并抛出错误 你能给我解释一下吗 var a function x alert x function a 1 谢谢大家 任务比我想象的要容易得多 这是因为 JS 将 IIFE 解析为函数的参数调用 这样做时
  • 如何修改每个JSON对象javascript

    我想修改里面的每个 JSON 值cooldown object cooldown user 1 This user2 0 This 在 Javascript 中使用 for 语句 我研究了好几个小时 只找到了内部的 blocks Edit
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它
  • 使用 JavaScript 禁用第三方 cookie

    我正在努力根据所有在欧盟运营的公司的数据保护规则实施新的 Cookie 政策合规性 根据该规则 用户在使用任何网站时必须能够拒绝 接受除必需的 Cookie 之外的所有内容 在我客户的网站中 我可以看到正在存储以下第三方 cookie ga
  • 如何使用javascript将大图像转换为十六进制?

    如果我尝试将图像转换为十六进制 无论我使用哪个函数 我都会收到此错误消息 该图像的大小为 7 MB 19812 毫秒 清理 1401 2 1455 0 gt 1401 2 1455 0 MB 9 9 0 ms 自上次 GC 以来 8 3 m
  • 如何将内联 JavaScript 与 Express/Node.js 中动态生成的内容分开?

    对于具有几年 Web 开发经验但没有找到答案的人来说 这是一个有点菜鸟的问题程序员堆栈交换 or Google 我决定在这里问一下 我在用Express网络框架Node js 但这个问题并不特定于任何 Web 框架或编程语言 以下是从数据库
  • 摩卡 - Chai Karma“套件未定义”

    我对 jscript tdd 很陌生 遇到了问题 希望有人能告诉我我在做什么 在浏览器中运行测试 通过 HTML 文件 一切正常 通过节点和业力运行它们我得到以下异常 我想在 node js 主机的 karma 中使用 Mocha 和 Ch
  • 带有淘汰赛js的隐形recaptcha

    我正在完成隐形验证码 但我在实现它时遇到问题 谷歌开发人员页面中的代码显示它应该是这样的
  • 在打字稿中导入 json

    我是 typescript 的新手 在我的项目中 我们使用 typescript2 在我的要求之一中 我需要导入 json 文件 所以我创建了 d ts 文件如下 test d ts declare module json const va
  • Chrome 扩展程序在代码中使用 client_secret

    我正在开发具有自己的 oAuth 授权的 Google Chrome 扩展 当然 我必须使用 client id 和 client secret 作为请求令牌 有什么办法可以向用户隐藏这些数据吗 由于此请求只是 javascript 源代码
  • Javascript split 不是一个函数

    嘿朋友们 我正在使用 javascript sdk 通过 jQuery facebook 多朋友选择器在用户朋友墙上发布信息 但是我收到此错误friendId split 不是函数 这是我的代码 function recommendToFr
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • 可以设置标题样式吗? (并且使用CSS或js?)[重复]

    这个问题在这里已经有答案了 我想知道是否可以设计一个title a href title This is a title Hello a 样式问题有两个方面 文本格式 编码 我猜这是可能的 所以在问题中这样做 工具提示样式 你能把它弄大一点
  • 正则表达式 - 从 markdown 字符串中提取所有标题

    我在用灰质 https www npmjs com package gray matter 以便将文件系统中的 MD 文件解析为字符串 解析器产生的结果是这样的字符串 n Clean er ReactJS Code Conditional
  • 代码镜像错误:未捕获错误:扩展集中无法识别扩展值([对象对象])

    全部 我目前正在从事一个React Electron项目 该项目的目标是完成一个Markdown编辑器 当我配置codemirror 该程序报告错误说 Uncaught Error Unrecognized extension value
  • 用于交互式图形绘制的轻量级 JavaScript 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣了解用于绘制交互式图表的最轻量级 javascript 库 我掌握的数据主要是与海洋研究相关的科学数据 我知道一些 jquery
  • 从 FileReader 设置背景图像样式

    我正在寻找一种解决方案 允许我从文件上传输入中获取文件并通过设置 document body style backgroundImage 来预览它 以下代码用于在 Image 元素中显示预览 function setImage id tar
  • JavaScript 相对路径

    在第一个 html 文件中 我使用了一个变量类别链接 var categoryLinks Career prospects http localhost Landa DirectManagers 511 HelenaChechik Dim0
  • 如何在执行新操作时取消先前操作的执行?

    我有一个动作创建器 它会进行昂贵的计算 并在每次用户输入内容时调度一个动作 基本上是实时更新 但是 如果用户输入多个内容 我不希望之前昂贵的计算完全运行 理想情况下 我希望能够取消执行先前的计算并只执行当前的计算 没有内置功能可以取消Pro

随机推荐

  • 日期范围内的日期范围

    实际上这个任务对我来说似乎很容易 但我有点卡住了 非常感谢一些提示 D 我有一些带有开始和结束时间的事件 我想创建一个包含日历周的表格 因此 我编写了一个方法来检查本周内是否有事件 并将其着色如下 private boolean inWee
  • 通过 f11 启用全屏后通过 javascript 禁用全屏

    通过按下面的按钮 我可以启用和禁用全屏模式 但按下 f12 后 我无法禁用全屏模式 我参考了其他答案 他们只提供了一种方法来检测窗口是否处于全屏模式 我是无法获取从全屏禁用全屏模式的代码 通过 f11 键制作 我尝试通过代码触发 f11 但
  • 以 PDF 形式通过电子邮件发送 Google 表格

    我有这个脚本 它通过电子邮件向我发送 Google 电子表格的 PDF 我只希望它通过电子邮件将第一个 选项卡 发送给我 如果可能的话 将其作为单个 PDF 或 zip 文件发送给我 想知道是否有人可以提供帮助 另外 其中一个 选项卡 是隐
  • 使用 Rcpp 将目标文件链接到函数的简化示例[重复]

    这个问题在这里已经有答案了 我现有的 C 代码由三个文件组成 头文件 h 文件 库文件 o 文件 和源文件 它们目前在 UNIX 下运行 并在 Matlab 中编译为 mex 文件 我想使用 Rcpp 将它们移植到 R 它们都又长又复杂 所
  • R中的随机森林对训练数据的大小有限制吗?

    我正在使用我的训练数据训练随机森林 该数据有 114954 行和 135 列 预测变量 我收到以下错误 model lt randomForest u b stars data traindata importance TRUE do tr
  • 可以通过 XML 定义 bean 构造型吗?

    是否可以通过 XML 定义 bean 构造型 如下
  • 在 pandas 中高效使用替换

    我正在寻找使用replace在 python3 中以有效的方式运行 我拥有的代码正在完成任务 但速度太慢 因为我正在处理大型数据集 因此 每当需要权衡时 我的首要任务是效率而不是优雅 这是我想做的一个玩具 import pandas as
  • listview onScroll 方法中某些项目为空

    我有一个列表视图 我重写了它的 onScroll 事件 以便我可以获取列表视图的第一个可见项目上的文本的第一个字符 我的代码如下 Override public void onScrollStateChanged AbsListView v
  • Material-ui 工具提示无法正常工作

    我正在尝试使用material ui 工具提示 我希望工具提示显示在顶部 即使设置后placement top 演示可以找到here https codesandbox io s yjrq3lkk29 我在这里做错了什么 因为页面没有足够的
  • 仅允许在 WPF 文本框中输入数字

    我想验证用户输入以确保它们是整数 我该怎么做 我想用IDataErrorInfo这似乎是在 WPF 中进行验证的 正确 方法 所以我尝试在我的 ViewModel 中实现它 但问题是我的文本框绑定到一个整数字段 并且不需要验证是否int i
  • 多指标散点图

    假设我有以下数据 data Value 1 1 3 0 1 2 4 0 1 3 51 0 1 4 10 0 1 5 2 0 1 6 17 0 1 7 14 0 1 8 7 0 1 9 2 0 1 10 1 0 df pd DataFrame
  • 在不同的子域上使用 Socket.IO 服务器和客户端

    我有两个子域 socket mydomain com Socket IO 服务器 app mydomain com 我想连接到我的网络套接字的网络应用程序 在 app mydomain com 的登陆页面中 我已链接到 Socket IO
  • 使用 IIS-Express 激活压缩(尤其是动态压缩)

    是否可以在 IIS Express 上启用动态压缩 针对 WCF 服务 这是一个开发环境问题 因此我无法使用完整版本 但我需要弄清楚它在压缩时的表现如何 进入 IIS Express 安装文件夹 programfiles IIS Expre
  • 如何在最新的Next.js中获取服务器端数据?尝试了 getStaticProps 但它没有运行并且未定义

    我正在使用 Next js 开发 Django Rest 框架 但我陷入了从 API 获取数据的困境 我在这个网址中有数据http 127 0 0 1 8000 api campaigns当我访问该网址时 我会看到数据 问题是当我使用 Ne
  • 对具有大量零特征的数据进行归一化/标准化是否有利

    我拥有大约 60 个特征的数据 在我的训练数据中 大多数情况下大多数情况下都为零 只有 2 3 列可能有值 准确地说是其性能日志数据 但是 我的测试数据在其他一些列中会有一些值 我已经完成了归一化 标准化 分别尝试了两者 并将其提供给 PC
  • 未处理的承诺拒绝 - 错误:发送后无法设置标头

    我是节点新手 我有一个简单的情况 我正在发布到节点 express 应用程序上的端点 问题是我得到 POST api v2 user 500 25 378 ms 54 node 19024 UnhandledPromiseRejection
  • 带有嵌套 JSON 的 React/Redux mapStateToProps

    我有一个正在解析 JSON 的 redux 组件 在底部 但我不知道如何获取嵌套的子对象 我认为我没有正确理解 mapStateToProps 的工作原理 控制台日志正在转储子对象 但是当我尝试访问 services name 时 我得到
  • Android 数据库陌生列表列

    我在读取 Android SQLite 数据库中的列的两种方法之间得到不一致的结果 首先 这是根据此处接受的答案的数据库升级例程的一部分 将 SQLite 数据库从一个版本升级到另一版本 https stackoverflow com qu
  • CMake add_subdirectory()

    介绍 我正在尝试使用 CMake 来获取跨平台编译脚本 适用于 Windows32 上的 VS 9 0 和 Unix 上的 Makefiles 我遇到了关于 add subdirectory 的一些我无法理解的事情 让我向你展示我的代码 C
  • React Native - 剪贴板中更改的监听器

    有没有办法在 React Native 中添加剪贴板数据更改的侦听器 基本上取决于用户是否在剪贴板中复制了某些内容 无论是在应用程序内部还是在后台应用程序 我想执行一些方法 React Native 没有为您提供监听此类事件的方法 但您有两