调用原生模块

来源:互联网 发布:运营商大数据应用案例 编辑:程序博客网 时间:2024/06/07 01:39

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;
原创粉丝点击