第一步首先创建ReactNative 模块类继承ReactContextBaseJavaModule
package com.mixture;
import android.content.Context;
import android.widget.Toast;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
public class MyNativeModule extends ReactContextBaseJavaModule {
public static final String REACTCLASSNAME =
"MyNativeModule"
;
private Context mContext;
public MyNativeModule(ReactApplicationContext reactContext) {
super
(reactContext);
mContext = reactContext;
}
@Override
public String getName() {
return
REACTCLASSNAME;
}
/**
* 必须添加反射注解不然会报错
* 这个方法就是ReactNative将要调用的方法,会通过此类名字调用
* @param msg
*/
@ReactMethod
public void callNativeMethod(String msg) {
Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
}
}
第二步创建一个React包管理器实现ReactPackage将每个模块放到模块集合中
|
第三步在应用入口注册这个React包管理器
package
com.mixture;
import
android.app.Application;
import
android.util.Log;
import
com.facebook.react.ReactApplication;
import
com.facebook.react.ReactInstanceManager;
import
com.facebook.react.ReactNativeHost;
import
com.facebook.react.ReactPackage;
import
com.facebook.react.shell.MainReactPackage;
import
java.util.Arrays;
import
java.util.List;
public
class
MainApplication
extends
Application
implements
ReactApplication {
private
final
ReactNativeHost mReactNativeHost =
new
ReactNativeHost(
this
) {
@Override
protected
boolean
getUseDeveloperSupport() {
return
BuildConfig.DEBUG;
}
@Override
protected
List<ReactPackage> getPackages() {
return
Arrays.<ReactPackage>asList(
new
MainReactPackage(),
//在应用中注册这个包管理器
new
MyReactPackage()
);
}
};
@Override
public
ReactNativeHost getReactNativeHost() {
return
mReactNativeHost;
}
}
第四步就是在ReactNative中调用react-native中提供一个NativeModules通过模块名字和方法名字进行调用
|
原文地址:https://www.cnblogs.com/candyzhmm/p/8975015.html