react-native 调用原生模块详解

来源:互联网 发布:百度数据库工程师 编辑:程序博客网 时间:2024/06/05 09:21

一,继承 ReactContextBaseJavaModule 实现如下方法  自定义方法用 @ReactMethod注释/**            * 日志打印module    * Created by ybj on 2016/2/26.            */    public class ReactLogModule extends ReactContextBaseJavaModule {        private static final String MODULE_NAME="Log";    private static final String TAG_KEY = "TAG";    private static final String TAG_VALUE = "LogModule";    public ReactLogModule(ReactApplicationContext reactContext) {        super(reactContext);    }    @Override    public String getName() {        return MODULE_NAME;    }    @ReactMethod    public  void  d(String tag,String message){        Log.d(tag,message);       /* WritableMap params = Arguments.createMap();        params.putString("TAG",tag);        params.putString("MSG",message);        getReactApplicationContext()                .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)                .emit("logInConsole", params);//对应的javascript层的事件名为logInConsole,注册该事件即可进行回调*/    }    @Override    public Map<String, Object> getConstants() {        final Map<String,Object> constants= MapBuilder.newHashMap();        constants.put(TAG_KEY,TAG_VALUE);        return constants;    }}
二,继承ReactPackage,实现如下
/** * 日志打印 需要打印日志注册this * Created by ybj on 2016/2/26. */public class ReactLogPackage implements ReactPackage {    @Override    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {        List<NativeModule> modules=new ArrayList<NativeModule>();        ReactLogModule reactLogModule=new ReactLogModule(reactContext);        modules.add(reactLogModule);        return modules;    }    @Override    public List<Class<? extends JavaScriptModule>> createJSModules() {        return Collections.emptyList();    }    @Override    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {        return Collections.emptyList();    }}
三 添加package
mReactInstanceManager = ReactInstanceManager.builder()        .setApplication(((Activity) mContext).getApplication())        .setJSBundleFile(bundleFile)                //  .setJSMainModuleName("test")        .setNativeModuleCallExceptionHandler(new NativeModuleCallExceptionHandler() {            @Override            public void handleException(Exception e) {            }        })        .addPackage(new MainReactPackage())        .addPackage(new ReactLogPackage())               .setUseDeveloperSupport(false)        .setInitialLifecycleState(LifecycleState.RESUMED)        .build();mReactRootView.startReactApplication(mReactInstanceManager, "OperationActivity", null);
0 0
原创粉丝点击