diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 851fba217..37436cdf3 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -15,6 +15,13 @@ + + + + + + + - - - - - diff --git a/example/android/app/src/main/java/com/example/reactnativestripesdk/LaunchActivity.java b/example/android/app/src/main/java/com/example/reactnativestripesdk/LaunchActivity.java new file mode 100644 index 000000000..e6bdfd730 --- /dev/null +++ b/example/android/app/src/main/java/com/example/reactnativestripesdk/LaunchActivity.java @@ -0,0 +1,20 @@ +package com.example.reactnativestripesdk; + +import android.os.Bundle; +import android.app.Activity; +import android.content.Intent; + +public class LaunchActivity extends Activity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + MainApplication application = (MainApplication) getApplication(); + // check that MainActivity is not started yet + if (!application.isActivityInBackStack(MainActivity.class)) { + Intent intent = new Intent(this, MainActivity.class); + startActivity(intent); + } + finish(); + } +} diff --git a/example/android/app/src/main/java/com/example/reactnativestripesdk/MainActivity.java b/example/android/app/src/main/java/com/example/reactnativestripesdk/MainActivity.java index c5a4437cd..e3cd04056 100644 --- a/example/android/app/src/main/java/com/example/reactnativestripesdk/MainActivity.java +++ b/example/android/app/src/main/java/com/example/reactnativestripesdk/MainActivity.java @@ -15,6 +15,18 @@ protected String getMainComponentName() { return "main"; } + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ((MainApplication) getApplication()).addActivityToStack(this.getClass()); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + ((MainApplication) getApplication()).removeActivityFromStack(this.getClass()); + } + /** * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and * you can specify the rendered you wish to use (Fabric or the older renderer). diff --git a/example/android/app/src/main/java/com/example/reactnativestripesdk/MainApplication.java b/example/android/app/src/main/java/com/example/reactnativestripesdk/MainApplication.java index bff08a508..da9009f26 100644 --- a/example/android/app/src/main/java/com/example/reactnativestripesdk/MainApplication.java +++ b/example/android/app/src/main/java/com/example/reactnativestripesdk/MainApplication.java @@ -12,6 +12,7 @@ import com.example.reactnativestripesdk.newarchitecture.MainApplicationReactNativeHost; import java.lang.reflect.InvocationTargetException; import java.util.List; +import java.util.ArrayList; import com.reactnativestripesdk.StripeSdkPackage; public class MainApplication extends Application implements ReactApplication { @@ -60,6 +61,20 @@ public void onCreate() { initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); // Remove this line if you don't want Flipper enabled } + private ArrayList runningActivities = new ArrayList<>(); + + public void addActivityToStack (Class cls) { + if (!runningActivities.contains(cls)) runningActivities.add(cls); + } + + public void removeActivityFromStack (Class cls) { + if (runningActivities.contains(cls)) runningActivities.remove(cls); + } + + public boolean isActivityInBackStack (Class cls) { + return runningActivities.contains(cls); + } + /** * Loads Flipper in React Native templates. *