react-native - 从 AccessibilityService 访问 react-native 数据

标签 react-native react-native-android accessibilityservice

目前我有一个 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/

相关文章:

react-native - 短信代码已过期。请重新发送验证码重试

react-native - 安卓 : Network Request Failed when trying to upload image with fetch

java - 在 Android Studio 上移动鼠标指针

react-native - React Native 是否在不更新应用程序的情况下启用实时更新?

react-native - 基于未声明的存储的 React Navigation 导致警告

android - 无法从 Assets 'index.android.bundle' 加载脚本。确保你的包被正确打包或者你正在运行一个打包服务器

background - 如何在前台后台接收消息 - React Native?

javascript - 如何触发TouchableOpacity的onPress事件?

java - 我可以在没有 root 的情况下使用辅助功能 API 在我自己的应用程序之外触发触摸事件吗?

android - AccessibilityService 可以调度关键事件,甚至包括 Unicode 字符吗?