diff --git a/android/sdk/src/main/java/org/jitsi/meet/sdk/BaseReactView.java b/android/sdk/src/main/java/org/jitsi/meet/sdk/BaseReactView.java index b71a364b9186..9917e38b068c 100644 --- a/android/sdk/src/main/java/org/jitsi/meet/sdk/BaseReactView.java +++ b/android/sdk/src/main/java/org/jitsi/meet/sdk/BaseReactView.java @@ -111,8 +111,7 @@ public BaseReactView(@NonNull Context context) { setBackgroundColor(BACKGROUND_COLOR); - ReactInstanceManagerHolder.initReactInstanceManager( - ((Activity) context).getApplication()); + ReactInstanceManagerHolder.initReactInstanceManager((Activity)context); // Hook this BaseReactView into ExternalAPI. externalAPIScope = UUID.randomUUID().toString(); diff --git a/android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetActivityDelegate.java b/android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetActivityDelegate.java index 3567a32afdae..a0aa2b5af9e7 100644 --- a/android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetActivityDelegate.java +++ b/android/sdk/src/main/java/org/jitsi/meet/sdk/JitsiMeetActivityDelegate.java @@ -25,6 +25,7 @@ import com.calendarevents.CalendarEventsPackage; import com.facebook.react.ReactInstanceManager; import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.ReactContext; import com.facebook.react.modules.core.PermissionListener; /** @@ -117,7 +118,13 @@ public static void onHostPause(Activity activity) { = ReactInstanceManagerHolder.getReactInstanceManager(); if (reactInstanceManager != null) { - reactInstanceManager.onHostPause(activity); + // Try to avoid a crash because some devices trip on this assert: + // https://github.com/facebook/react-native/blob/df4e67fe75d781d1eb264128cadf079989542755/ReactAndroid/src/main/java/com/facebook/react/ReactInstanceManager.java#L512 + // Why this happens is a mystery wrapped in an enigma. + ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); + if (activity == reactContext.getCurrentActivity()) { + reactInstanceManager.onHostPause(activity); + } } } diff --git a/android/sdk/src/main/java/org/jitsi/meet/sdk/ReactInstanceManagerHolder.java b/android/sdk/src/main/java/org/jitsi/meet/sdk/ReactInstanceManagerHolder.java index 5fe1fcbf7705..71677ecb16ff 100644 --- a/android/sdk/src/main/java/org/jitsi/meet/sdk/ReactInstanceManagerHolder.java +++ b/android/sdk/src/main/java/org/jitsi/meet/sdk/ReactInstanceManagerHolder.java @@ -18,7 +18,6 @@ package org.jitsi.meet.sdk; import android.app.Activity; -import android.app.Application; import android.support.annotation.Nullable; import com.facebook.react.ReactInstanceManager; @@ -175,9 +174,9 @@ static ReactInstanceManager getReactInstanceManager() { * time. All {@code ReactRootView} instances will be tied to the one and * only {@code ReactInstanceManager}. * - * @param application {@code Application} instance which is running. + * @param activity {@code Activity} current running Activity. */ - static void initReactInstanceManager(Application application) { + static void initReactInstanceManager(Activity activity) { if (reactInstanceManager != null) { return; } @@ -215,7 +214,8 @@ public List createViewManagers(ReactApplicationContext reactContext reactInstanceManager = ReactInstanceManager.builder() - .setApplication(application) + .setApplication(activity.getApplication()) + .setCurrentActivity(activity) .setBundleAssetName("index.android.bundle") .setJSMainModulePath("index.android") .addPackages(packages)