2
私は、電話機がコールを受信したときにJavascriptメソッドを呼び出す必要がある反応ネイティブのモジュールを作成しようとしていました。しかし、私がコマンドreact-native run-android
を実行すると、compileDebugJavaWithJavac
が次のエラーで壊れます。私はこの問題のが、運と解決のための偉大なインターネットを検索していJavaでデバッグをコンパイルするときに、JavaファイルがDeviceEventManagerModuleを見つけられない
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);
}
}
:
CallListenerModule.java:44 error: package DeviceEventManagerModule does not exist (DeviceEventManagerModule.RCTDeviceEventEmitter.class)
この
はCallListenerModuleクラスです。sendEvent
メソッドは
docsからコピーされます。私は
@Nullable
をparamsパラメータから削除しました。別のエラーが発生したため、パラメータなしでイベントを送信するつもりはないからです。
これはSOので、任意の建設的な批判が評価されての私の最初の投稿です:)
あなたはimport文欠けている: '輸入com.facebook.react.modules.core.DeviceEventManagerModule' – Robert
感謝を!それはトリックでした。インポートするパッケージを簡単に把握する方法はありますか? import文が必ずしもドキュメントに含まれているとは限りません。 –
自動コードチェック/コンパイルでJava IDEを使用する - 欠落しているインポートはエラーとして表示されます - 通常、どのクラスをインポートするか提案します。 – Robert