diff --git a/packages/react-native/ReactAndroid/api/ReactAndroid.api b/packages/react-native/ReactAndroid/api/ReactAndroid.api index 75336c6994..f5564a0c71 100644 --- a/packages/react-native/ReactAndroid/api/ReactAndroid.api +++ b/packages/react-native/ReactAndroid/api/ReactAndroid.api @@ -557,6 +557,7 @@ public class com/facebook/react/bridge/BridgeReactContext : com/facebook/react/b public fun getJSCallInvokerHolder ()Lcom/facebook/react/turbomodule/core/interfaces/CallInvokerHolder; public fun getJSModule (Ljava/lang/Class;)Lcom/facebook/react/bridge/JavaScriptModule; public fun getNativeModule (Ljava/lang/Class;)Lcom/facebook/react/bridge/NativeModule; + public fun getNativeModule (Ljava/lang/String;)Lcom/facebook/react/bridge/NativeModule; public fun getNativeModules ()Ljava/util/Collection; public fun getSourceURL ()Ljava/lang/String; public fun handleException (Ljava/lang/Exception;)V @@ -1106,6 +1107,7 @@ public abstract class com/facebook/react/bridge/ReactContext : android/content/C public abstract fun getJavaScriptContextHolder ()Lcom/facebook/react/bridge/JavaScriptContextHolder; public fun getLifecycleState ()Lcom/facebook/react/common/LifecycleState; public abstract fun getNativeModule (Ljava/lang/Class;)Lcom/facebook/react/bridge/NativeModule; + public abstract fun getNativeModule (Ljava/lang/String;)Lcom/facebook/react/bridge/NativeModule; public abstract fun getNativeModules ()Ljava/util/Collection; public fun getNativeModulesMessageQueueThread ()Lcom/facebook/react/bridge/queue/MessageQueueThread; public abstract fun getSourceURL ()Ljava/lang/String; @@ -4968,6 +4970,7 @@ public class com/facebook/react/uimanager/ThemedReactContext : com/facebook/reac public fun getJavaScriptContextHolder ()Lcom/facebook/react/bridge/JavaScriptContextHolder; public fun getModuleName ()Ljava/lang/String; public fun getNativeModule (Ljava/lang/Class;)Lcom/facebook/react/bridge/NativeModule; + public fun getNativeModule (Ljava/lang/String;)Lcom/facebook/react/bridge/NativeModule; public fun getNativeModules ()Ljava/util/Collection; public fun getReactApplicationContext ()Lcom/facebook/react/bridge/ReactApplicationContext; public fun getSourceURL ()Ljava/lang/String; diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java index 874886779a..5ef63bab9f 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/BridgeReactContext.java @@ -129,6 +129,14 @@ public class BridgeReactContext extends ReactApplicationContext { return mCatalystInstance.getNativeModule(nativeModuleInterface); } + @Override + public @Nullable NativeModule getNativeModule(String moduleName) { + if (mCatalystInstance == null) { + raiseCatalystInstanceMissingException(); + } + return mCatalystInstance.getNativeModule(moduleName); + } + @Override public CatalystInstance getCatalystInstance() { return Assertions.assertNotNull(mCatalystInstance); diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java index ade85e0a90..3cbfdf6588 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/bridge/ReactContext.java @@ -150,6 +150,11 @@ public abstract class ReactContext extends ContextWrapper { @Nullable public abstract T getNativeModule(Class nativeModuleInterface); + /** + * @return the instance of the specified module interface associated with this ReactContext. + */ + public abstract @Nullable NativeModule getNativeModule(String moduleName); + /** * Calls RCTDeviceEventEmitter.emit to JavaScript, with given event name and an optional list of * arguments. diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java index 78f4e0c59a..90304df643 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/runtime/BridgelessReactContext.java @@ -181,6 +181,11 @@ class BridgelessReactContext extends ReactApplicationContext implements EventDis return mReactHost.getNativeModule(nativeModuleInterface); } + @Override + public @Nullable NativeModule getNativeModule(String name) { + return mReactHost.getNativeModule(name); + } + @Override @FrameworkAPI @UnstableReactNativeAPI diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java index 628c6796aa..79912cf4c4 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/uimanager/ThemedReactContext.java @@ -100,6 +100,12 @@ public class ThemedReactContext extends ReactContext { return mReactApplicationContext.getNativeModule(nativeModuleInterface); } + @Nullable + @Override + public NativeModule getNativeModule(String moduleName) { + return mReactApplicationContext.getNativeModule(moduleName); + } + @Override public CatalystInstance getCatalystInstance() { return mReactApplicationContext.getCatalystInstance();