Skip to main content

Android Modules

Official Documentation

Some android related platform APIs are not available in the react-native itself. So, we have to create native modules. To create a new native module in android, must have a basic knowledge in java/kotlin and how to use android studio.

Steps to create android modules

  • Creating Native Module.
  • Exposing Native Module.
  • Registering the module.
  • Testing.

Create the Module​

Under android/src/main/java/com/your-app-name/ Create an android module MyModule.java that extends ReactContextBaseJavaModule.

MyModule.java
public class MyModule extends ReactContextBaseJavaModule {

public MyModule(ReactApplicationContext reactContext) {
super(reactContext);
}

@Override
public String getName() {
return "MyModule";
}

@ReactMethod
public void addNumbers(int num1, int num2, Callback callback) {
int result = num1 + num2;
callback.invoke(result);
}
}

Create Packager​

Create a new java file CustomPackager.java at your convenient path and extend it with ReactPackage

MyModulePackage.java
public class MyModulePackage implements ReactPackage {

@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();

// Add your custom native module class here
modules.add(new MyModule(reactContext));

return modules;
}

@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
List<ViewManager> managers = new ArrayList<>();

// Add your custom view manager class here
// managers.add(new MyViewManager());

return managers;
}
}

Register Package​

Add the ReactPackage to your app's package list In your app's MainApplication.java file, import your ReactPackage class and add an instance of it to the getPackages() method.

MainApplication.java
import com.yourpackagename.MyModulePackage;

public class MainApplication extends Application implements ReactApplication {

// ...

@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
new MainReactPackage(),
new MyModulePackage() // Add your package here
);
}
}

Create a JavaScript interface​

import { NativeModules } from 'react-native';

const { MyModule } = NativeModules;

MyModule.addNumbers(2, 3, (result) => {
console.log(result); // prints 5
});