gpt4 book ai didi

android - 如何将数据从 Android 原生 - Kotlin 传递到 React Native?

转载 作者:行者123 更新时间:2023-12-02 13:38:43 25 4
gpt4 key购买 nike

我是 Android 中 React Native 集成的新手。我正在创建一个聊天应用程序,为此需要在我的 React Native 组件中传递 UserId 和另一个用户信息。如何从 Android Native 传递它?我搜索了但我没有找到任何成功的线索。我试过用 SharedPreference 来做,但不知道如何在 React native 中提取 sharedpreference 持有者。有没有其他方法可以提取这些信息?

我在 ReactActivity 中创建了 ReactRootView 并在其中集成了 ReactInstanceManager。

根据 Geng 和 Cool7 的回答,我已经实现了我的 Android Kotlin 代码,如下所示:

val map = Arguments.createMap()
map.putString("user_id", "Value1")
try {
mReactInstanceManager?.currentReactContext
?.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
?.emit("userEventMap", map)
} catch (e: Exception) {
Log.d("ChatActivity", "DeviceEventEmitter Caught Exception: " + e.printStackTrace())
}

我提取它的 React native 代码如下:
componentWillMount() {
console.log("UserId Emission");
DeviceEventEmitter.addListener("userEventMap", function() {
console.log("UserId Emission inside");
console.log("UserId :: ", e.user_id);
});

}

我也尝试过 Cool7 的同上代码,也像上面一样。但是 UserId Emission 正在打印,但内部日志没有。在这个发射器中没有听到 map 。

提前致谢。

最佳答案

要从 android 发送数据以响应 native :

从 android 端以下列方式发出您的事件(通知或广播):

    public class MainActivity extends ReactActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

WritableMap map = Arguments.createMap();
map.putString("key1", "Value1");
map.putString("key1", "Value1");

try {
getReactInstanceManager().getCurrentReactContext()
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("customEventName", map);
} catch (Exception e){
Log.e("ReactNative", "Caught Exception: " + e.getMessage());
}
}

并在 react 组件 addEventListner(subscribe) 到该事件,如:
import { DeviceEventEmitter } from 'react-native';

componentWillMount: function() {
DeviceEventEmitter.addListener('customEventName', function(e: Event) {
// handle event.
});

}

另请参阅

To send data from android native to react native

关于android - 如何将数据从 Android 原生 - Kotlin 传递到 React Native?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49273285/

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