在React Native中封装Android原生模块,你需要按照以下步骤操作:
- 创建一个新的Java类作为原生模块,并继承
ReactContextBaseJavaModule
。 - 实现
getName
方法,返回模块名称供JavaScript端使用。 - 实现需要暴露给JavaScript的方法。
- 注册模块,在
Application
类的getPackages
方法中添加模块。
以下是一个简单的示例:
// MyModule.java
package com.myapp;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Callback;
public class MyModule extends ReactContextBaseJavaModule {
MyModule(ReactApplicationContext context) {
super(context);
}
@Override
public String getName() {
return "MyModule";
}
@ReactMethod
public void sampleMethod(String input, Callback callback) {
// 实现方法内容
String result = "Received: " + input;
callback.invoke(result);
}
}
然后,在MainApplication.java
中注册模块:
// MainApplication.java
package com.myapp;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.uimanager.ViewManager;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
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 ReactPackage() {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
return Arrays.<NativeModule>asList(new MyModule(reactContext));
}
@Override
public List<ViewManager> createViewManagers(Re