如何将数据从Android native-Kotlin传递到React native?

如何将数据从Android native-Kotlin传递到React native?,android,react-native,kotlin,Android,React Native,Kotlin,我对Android中的React本机集成还不熟悉。我正在创建一个聊天应用程序,因此需要在React Native组件中传递用户ID和另一个用户信息。我如何从Android Native传递该消息?我搜索过了,但没有找到任何成功的线索。我试着用SharedReference做这件事,但不知道如何在React native中提取SharedReference持有者。有没有其他方法可以提取这些信息 我在ReactActivity中创建了ReactRootView,并在其中集成了ReactInstanc

我对Android中的React本机集成还不熟悉。我正在创建一个聊天应用程序,因此需要在React Native组件中传递用户ID和另一个用户信息。我如何从Android Native传递该消息?我搜索过了,但没有找到任何成功的线索。我试着用SharedReference做这件事,但不知道如何在React native中提取SharedReference持有者。有没有其他方法可以提取这些信息

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

根据耿和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本机代码提取如下:

componentWillMount() {
console.log("UserId Emission");
DeviceEventEmitter.addListener("userEventMap", function() {
  console.log("UserId Emission inside");
  console.log("UserId :: ", e.user_id);
});
}

我也尝试过Cool7的同上代码和上面的类似代码。但是用户ID的发布被打印出来了,但是内部日志却没有。此发射器中的地图未被监听


提前感谢。

要从android向react 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 component addEventListner(订阅)中,该事件如下所示:

import { DeviceEventEmitter } from 'react-native';

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

也指


请参阅。基本上,您需要在本机代码中创建和注册一个模块,并从react native调用它。

Cool7,正如您所说,我已经使用了,但是设备事件发射器没有监听发送的数据。这对我不起作用。。有什么遗漏吗?我已经编辑了我的问题,请检查。没有错误,只是没有发出。我们可以用SharedReference传递数据吗?有没有办法在React Native中调用共享首选项?这也行,我想是的,我们可以将来自android(java)的数据存储在共享首选项中,并可以在react native中获取这些数据。您可以参考:好的,我会尝试一下,然后返回。谢谢