1

我已经为我的 react native 应用程序设置了一个android 应用程序链接...但是每当我点击链接并选择我的应用程序打开它时,系统确实会尝试打开我的应用程序但我的应用程序崩溃了...我已经设置了 android正确链接并且我想在点击链接时启动的活动确实打开了..但是我无法在活动中设置RCTDeviceEventEmitter ...我对如何在这里提供反应上下文感到困惑..所以我创建了ReactContextFetcher.java 中的自定义类,如下所示:

public class ReactContextFetcher extends ReactContextBaseJavaModule {
    @Override
    public String getName() {
        return "ReactContextFetcher";
    }

    public ReactContext fetchReactContext() {
        return getReactApplicationContext();
    }

}

我在由 android 应用程序链接启动的活动中使用此上下文,如下所示:

public class NewFriendActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(null);
        ReactContext rContext = new ReactContextFetcher().fetchReactContext();
        Intent intent = getIntent();
        String data = intent.getData().toString();
        String user = data.split("/add-friend/")[1];
        Log.d("obscure_tag", data.toString());
        sendEvent(rContext, "NewFriend", user);

    }

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

这就是我在 javascript 中接收此事件的方式:

import {NativeEventEmitter, NativeModules} from 'react-native';

class NewFriendReceiver extends React.Component {
  componentDidMount() {
    const eventEmitter = new NativeEventEmitter(NativeModules.ToastExample);
    this.eventListener = eventEmitter.addListener('NewFriend', event => {
      console.log(event.eventProperty); // "someValue"
    });
  }
  componentWillUnmount() {
    this.eventListener.remove(); //Removes the listener
  }
}

我究竟做错了什么?为什么当我点击 android 链接时我的应用程序会崩溃?它与我如何使用反应上下文有什么关系吗?

4

0 回答 0