使用 Java 编译调试时,Java 文件找不到 DeviceEventManagerModule

标签 java android react-native

我一直在尝试为 react-native 编写一个模块,当手机接到电话时应该调用 Javascript 方法。但是当我运行命令 react-native run-android 时,compileDebugJavaWithJavac 崩溃并出现以下错误。

CallListenerModule.java:44 error: package DeviceEventManagerModule does not exist (DeviceEventManagerModule.RCTDeviceEventEmitter.class)

这是 CallListenerModule 类:

import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;


import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.WritableMap;
import com.facebook.react.bridge.Arguments;

import android.util.Log;

public class CallListenerModule extends ReactContextBaseJavaModule {
    BroadcastReceiverCustom broadcastRecevier;

    ReactContext context;

    public CallListenerModule(ReactApplicationContext reactContext) {
        super(reactContext);
        context = reactContext;
        broadcastRecevier = new BroadcastReceiverCustom(reactContext);
    }

    @Override
        public String getName() {
        return "CallListenerModule";
    }

    public void sendCallEvent(String incomingNumber){
        WritableMap params = Arguments.createMap();
        params.putString("Number", incomingNumber);
        sendEvent(context, "CallRecevied", params);
    }


    private void sendEvent(ReactContext reactContext,
                        String eventName,
                        WritableMap params) {
        reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(eventName, params);
    }
}

我在互联网上搜索了这个问题的解决方案,但没有成功。 sendEvent 方法是从 docs 中复制的.我从 params 参数中删除了 @Nullable,因为它导致了另一个错误,我不打算在没有参数的情况下发送事件。

这是我关于 SO 的第一篇文章,因此欢迎任何建设性的批评 :)

最佳答案

您忘记导入类 com.facebook.react.modules.core.DeviceEventManagerModule。因此,您可以通过添加以下行来解决您的问题:

导入 com.facebook.react.modules.core.DeviceEventManagerModule

关于使用 Java 编译调试时,Java 文件找不到 DeviceEventManagerModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36617182/

相关文章:

java - 如何从 'ul' 标签获取文本?

java - 如何告诉 MapReduce 同时使用多少个映射器?

java - 尽管 Eclipse 中的一切都正确,但 Android ActivityNotFoundException

Android Studio 集成 Google Maps API v2

javascript - 如何将数据从类传递到 React Native 数组、firebase、stack navigator v5 中的函数

react-native - 如何修改app.json文件并更改博览会小吃的sdkVersion?

使用 JOptionPane 的 Java 选举程序

java - 调用方法时出错

android - Delphi XE5 REST/Android 客户端 "Session has expired"

android - 删除弹出的 React Native 应用程序中的 CALL_LOG 和 SMS 权限