android与React Native之间传递参数
在Android和React Native之间传递参数通常涉及到以下几种情况:
从React Native向Android传递参数:
在React Native中,可以通过
AndroidIntents
模块来发送Intent。以下是一个简单的例子:
import { NativeModules } from 'react-native';
// 假设有一个名为MyNativeModule的原生模块
NativeModules.MyNativeModule.sendDataToAndroid('Hello, Android!');
在Android端,你需要创建一个Module,并在React Context中注册它:
public class MyNativeModule extends ReactContextBaseJavaModule {
private ReactContext mContext;
MyNativeModule(ReactApplicationContext context) {
super(context);
mContext = context;
}
@Override
public String getName() {
return "MyNativeModule";
}
@ReactMethod
public void sendDataToAndroid(String data) {
// 在这里处理接收到的数据
// ...
}
}
然后在Application类中注册Module:
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
// ...
new MyNativeModulePackage() // 新增这个Module的Package
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
// ...
}
public class MyNativeModulePackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new MyNativeModule(reactContext));
return modules;
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
从Android向React Native传递参数:
在Android中,你可以通过发送事件到JavaScript来实现:
public class MyNativeModule extends ReactContextBaseJavaModule {
private ReactContext mContext;
MyNativeModule(ReactApplicationContext context) {
super(context);
mContext = context;
}
// ...
public void sendDataToJS(String data) {
mContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit
评论已关闭