目前我有一个 react-native 应用程序,它的数据存储在它的 redux 存储中。
我按照 https://developer.android.com/guide/topics/ui/accessibility/services 提供的说明进行操作创建无障碍服务。
现在我有来自 Accessibility Server 中的网站的数据,例如url 并想询问 react-native 上下文给我存储在它的 redux 存储(或异步存储)中的数据。
从正在运行的 react-native 应用程序 (js) 中调用 native 代码非常容易,但是您将如何实现另一种方式?
最佳答案
唯一支持的以另一种方式发送信息的方式是在 native 端发送一个您已在 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);
关于react-native - 从 AccessibilityService 访问 react-native 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51326749/