В настоящее время следующий код успешно получает текст, который передается приложению, но мне не удается узнать, как отправить это событие на сторону Javascript. Я попытался создать новый NavigationReactGateway, но мое приложение просто аварийно завершило работу. Я новичок в Java, поэтому даже не знаю, правильно ли я это сделал.
public class MainActivity extends SplashActivity {
/**
* Returns the name of the main component registered from JavaScript.
* This is used to schedule rendering of the component.
*/
protected String getMainComponentName() {
return "MyApplication";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
handleSendText(intent);
}
}
}
void handleSendText(Intent intent) {
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
if (sharedText != null) {
// Send event to Javascript as "share" event
}
}
}
Как правильно отправить это событие в Javascript?
В приложении есть react-native-navigation, и есть много ссылок на эмиттер событий, я просто не уверен, как получить контекст реакции для генерации события. Если в этом есть смысл.




Мне удалось изменить метод handleSendText следующим образом, чтобы отправить событие.
private void handleSendText(Intent intent) {
String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);
if (sharedText != null) {
ReactContext context = NavigationApplication.instance.getReactGateway().getReactContext();
if (context != null) {
WritableMap params = Arguments.createMap();
params.putString("event", sharedText);
context.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit("share", params);
}
}
}
Мне также пришлось перейти от использования метода onCreate к использованию onStop, затем контекст реакции был инициализирован, и мое событие запускается независимо от того, было ли приложение уже открыто или нет.
В React Native уже есть мост между нативным и Javascript. Я пытаюсь использовать для этого то, что у меня уже есть.