diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java index 82b434bdb68..0caedb9b768 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java @@ -1,5 +1,6 @@ package com.reactnativenavigation.react; +import com.reactnativenavigation.utils.LaunchArgsParser; import com.facebook.react.ReactInstanceManager; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.Promise; @@ -72,6 +73,11 @@ public String getName() { return NAME; } + @ReactMethod + public void getLaunchArgs(String commandId, Promise promise) { + promise.resolve(LaunchArgsParser.parse(activity())); + } + @ReactMethod public void getConstants(Promise promise) { ReactApplicationContext ctx = getReactApplicationContext(); diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/utils/LaunchArgsParser.java b/lib/android/app/src/main/java/com/reactnativenavigation/utils/LaunchArgsParser.java new file mode 100644 index 00000000000..800d8c79237 --- /dev/null +++ b/lib/android/app/src/main/java/com/reactnativenavigation/utils/LaunchArgsParser.java @@ -0,0 +1,31 @@ +package com.reactnativenavigation.utils; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; + +import com.facebook.react.bridge.Arguments; +import com.facebook.react.bridge.WritableMap; + +public final class LaunchArgsParser { + + private static final String LAUNCH_ARGS = "launchArgs"; + + /** + * Parses launch args passed to activity intent to WritableMap + * @param activity to fetch the extra launch args + * @return parsed writable map if it exist, otherwise empty map will be returned + */ + public static WritableMap parse(Activity activity) { + if (activity != null) { + Intent intent = activity.getIntent(); + if (intent != null) { + Bundle launchArgs = intent.getBundleExtra(LAUNCH_ARGS); + if (launchArgs != null) { + return Arguments.fromBundle(launchArgs); + } + } + } + return Arguments.createMap(); + } +}