目前,我有一个本机应用程序,其数据存储在其redux存储中。
我按照https://developer.android.com/guide/topics/ui/accessibility/services提供的说明创建了可访问性服务。
现在,我从Accessibility Server中的某个网站获得了数据,例如网址,并想让react-native上下文为我提供存储在其redux存储(或异步存储)中的数据。
从正在运行的react-native应用程序(js)中调用本机代码非常容易,但是您将如何实现另一种方式呢?
答案 0 :(得分:0)
另一种受支持的发送信息的方法是在您已在JavaScript端订阅的本机端发出信号。
这是the docs中的示例(请参见将事件发送到JavaScript )。
在JavaScript中,订阅事件:
import { DeviceEventEmitter } from 'react-native';
...
var ScrollResponderMixin = {
mixins: [Subscribable.Mixin],
componentWillMount: function() {
...
this.addListenerOn(DeviceEventEmitter,
'keyboardWillShow',
this.scrollResponderKeyboardWillShow);
...
},
scrollResponderKeyboardWillShow:function(e: Event) {
this.keyboardWillOpenTo = e;
this.props.onKeyboardWillShow && this.props.onKeyboardWillShow(e);
},
在Java中,发送事件:
...
private void sendEvent(ReactContext reactContext,
String eventName,
@Nullable WritableMap params) {
reactContext
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
.emit(eventName, params);
}
...
WritableMap params = Arguments.createMap();
...
sendEvent(reactContext, "keyboardWillShow", params);