diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java index 912fcbcc756..22b82bed0ca 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactAccessibilityDelegate.java @@ -31,7 +31,10 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMapKeySetIterator; import com.facebook.react.bridge.ReadableType; +import com.facebook.react.bridge.UIManager; import com.facebook.react.bridge.WritableMap; +import com.facebook.react.uimanager.events.Event; +import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.react.uimanager.events.RCTEventEmitter; import java.util.HashMap; @@ -42,6 +45,7 @@ import java.util.HashMap; public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat { private static final String TAG = "ReactAccessibilityDelegate"; + public static final String TOP_ACCESSIBILITY_ACTION_EVENT = "topAccessibilityAction"; private static int sCounter = 0x3f000000; private static final int TIMEOUT_SEND_ACCESSIBILITY_EVENT = 200; private static final int SEND_EVENT = 1; @@ -281,9 +285,24 @@ public class ReactAccessibilityDelegate extends AccessibilityDelegateCompat { event.putString("actionName", mAccessibilityActionsMap.get(action)); ReactContext reactContext = (ReactContext) host.getContext(); if (reactContext.hasActiveCatalystInstance()) { - reactContext - .getJSModule(RCTEventEmitter.class) - .receiveEvent(host.getId(), "topAccessibilityAction", event); + final int reactTag = host.getId(); + UIManager uiManager = UIManagerHelper.getUIManager(reactContext, reactTag); + if (uiManager != null) { + uiManager + .getEventDispatcher() + .dispatchEvent( + new Event(reactTag) { + @Override + public String getEventName() { + return TOP_ACCESSIBILITY_ACTION_EVENT; + } + + @Override + public void dispatch(RCTEventEmitter rctEventEmitter) { + rctEventEmitter.receiveEvent(reactTag, TOP_ACCESSIBILITY_ACTION_EVENT, event); + } + }); + } } else { ReactSoftException.logSoftException( TAG, new ReactNoCrashSoftException("Cannot get RCTEventEmitter, no CatalystInstance"));