1.自定义模块继承ReactContextBaseJavaModule
public class XXX extends ReactContextBaseJavaModule {
//构造方法
public XXX(ReactApplicationContext reactContext) {
super(reactContext);
}
//重写getName,返回值为Js中调用的控件名称
@Override
public String getName() {
return "ToastAndroid";
}
//返回一些常量
@Override
public Map<String, Object> getConstants() {
final Map<String, Object> constants = new HashMap<>();
constants.put(String, Onjrct);
return constants;
}
//需加注解关键字ReactMethod
@ReactMethod
public void show(String message, int duration) {
//TODO
}
}
2.注册模块继承ReactPackage
public class XXX implements ReactPackage {
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new XXX(reactContext));
return modules;
}
在Application中的getPackage()方法中实例化注册模块
代码如下
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new XXX()
);
}
3.在RN中使用
import { NativeModules } from 'react-native';
var xxx = NativeModules.XXX;