gpt4 book ai didi

react-native-android - 从android native传递Continuous回调以响应本地组件

转载 作者:行者123 更新时间:2023-12-01 07:35:30 33 4
gpt4 key购买 nike

我正在为具有 Android 操作系统的设备开发条码扫描器应用程序。在该设备中,摩托罗拉提供用于扫描条码和获取数据的 SDK。我编写了一个 react native 应用程序来渲染我的 UI 和 native android 来获取条码。现在我是什么想要做一些事情,就像每次原生 android 获取扫描数据作为从摩托罗拉 sdk 回调时它应该将其传递给 rect native。我尝试了回调方法,但回调只能由 native 模块调用一次,这对我不起作用,因为项目会被扫描多次。

最佳答案

不幸的是,这个 isn't covered too well in the official docs .
我喜欢将此方法添加到我所有的桥接模块中

private void sendEvent(String eventName, @Nullable WritableMap params) {
getReactApplicationContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(eventName, params);
}

参数可以是许多不同的类型。以下是它们如何从 Java 映射到 JS
Boolean -> Bool
Integer -> Number
Double -> Number
Float -> Number
String -> String
Callback -> function
WritableMap -> Object
WritableArray -> Array

当您想从 native 代码向 React Native 发出和事件时,请使用此功能。如果你想传递一个数组或对象作为参数,你必须事先构建一个 WritableMap 或 WritableArray

例子:
public void emitInfo() {
infoMap = Arguments.createMap();
infoMap.putString("name", "dooley-doo");
infoMap.putInt("version", 16);
infoMap.putBoolean("isTrustworthy", False);
sendEvent('INFO_EVENT', infoMap);
}

然后在 JS 中,你可以像这样订阅这个事件:
const eventEmitter = new NativeEventEmitter(NativeModules.myModule);
this.subscription = eventEmitter.addListener('INFO_EVENT',(params)=>console.log(params));

然后当你完成后,像这样取消订阅: this.subscription.remove();

关于react-native-android - 从android native传递Continuous回调以响应本地组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40113261/

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