AccessibilityNodeInfo nodeInfo = event.getSource() 始终返回 null

2024-01-23

我正在尝试使用 AccessibilityNodeInfo 但当我使用 event.getSource() 时它总是返回 null,我尝试读取浏览器的编辑框,这是我的代码:

public class MainActivity extends Activity {
static final String TAG = "RecorderService";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Intent i = new Intent(this, RecorderService.class);
    startService(i);
}}

作为服务的accessibilityService代码:

public class RecorderService extends AccessibilityService {

static final String TAG = "RecorderService";

private String getEventType(AccessibilityEvent event) {
    switch (event.getEventType()) {
        case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
            return "TYPE_NOTIFICATION_STATE_CHANGED";
        case AccessibilityEvent.TYPE_VIEW_CLICKED:
            return "TYPE_VIEW_CLICKED";
        case AccessibilityEvent.TYPE_VIEW_FOCUSED:
            return "TYPE_VIEW_FOCUSED";
        case AccessibilityEvent.TYPE_VIEW_LONG_CLICKED:
            return "TYPE_VIEW_LONG_CLICKED";
        case AccessibilityEvent.TYPE_VIEW_SELECTED:
            return "TYPE_VIEW_SELECTED";
        case AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED:
            return "TYPE_WINDOW_STATE_CHANGED";
        case AccessibilityEvent.TYPE_VIEW_TEXT_CHANGED:
            return "TYPE_VIEW_TEXT_CHANGED";
    }
    return "default";
}

private String getEventText(AccessibilityEvent event) {
    StringBuilder sb = new StringBuilder();
    for (CharSequence s : event.getText()) {
        sb.append(s);
    }
    return sb.toString();
}
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {

    AccessibilityNodeInfo source = null;
    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
        source = event.getSource();
        Log.v(TAG, "Source Accessibility node info: " + source);
    }

    Log.v(TAG, String.format(
            "onAccessibilityEvent: [type] %s [class] %s [package] %s [time] %s [text] %s",
            getEventType(event), event.getClassName(), event.getPackageName(),
            event.getEventTime(), getEventText(event)));
}
@Override
public void onInterrupt() {
    Log.v(TAG, "onInterrupt");
}

@Override
protected void onServiceConnected() {
    super.onServiceConnected();
    Log.v(TAG, "***********onServiceConnected");
    AccessibilityServiceInfo info = new AccessibilityServiceInfo();
    info.flags = AccessibilityServiceInfo.DEFAULT |
            AccessibilityServiceInfo.FLAG_RETRIEVE_INTERACTIVE_WINDOWS |
            AccessibilityServiceInfo.FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY |
            AccessibilityServiceInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS |
            AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;
    info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK;
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC;
    setServiceInfo(info);}}

accessbibility.xml:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeWindowStateChanged|typeViewHoverEnter|typeViewHoverExit|typeWindowContentChanged"
android:accessibilityFeedbackType="feedbackSpoken"
android:accessibilityFlags="flagDefault|flagIncludeNotImportantViews|flagRequestTouchExplorationMode|flagRequestEnhancedWebAccessibility|flagReportViewIds|flagRequestFilterKeyEvents"
android:canRetrieveWindowContent="true"
android:canRequestTouchExplorationMode="true"
android:canRequestFilterKeyEvents="true"
android:canRequestEnhancedWebAccessibility="true"
android:settingsActivity="com.recorderservice"
/>

我发现了问题所在,这是因为我的 manifast 配置错误: 这是正确的: 我错误地将其命名为 android.RecorderService

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AccessibilityNodeInfo nodeInfo = event.getSource() 始终返回 null 的相关文章

  • 在应用程序简历中隐藏软键盘

    我有一个 Android 应用程序 使用 Xamarin 用 C 编写 我已将应用程序简化为包含 TextView 和用于横幅广告的 Google admod AdView 的 LinearLayout 我不希望软键盘出现在应用程序中 这不
  • getItem 与 getItemAtPosition

    有两种方法可以获取列表视图中的选定项目 list getAdapter getItem position list getItemAtPosition position 我的问题是 哪一种是首选的做法 我见过人们同时使用这两种方法 您可以使
  • Android第一次动画不流畅

    我正在尝试一个动画将 imageView 从屏幕底部滑动到屏幕中心 但是当我第一次执行此动画时 它不平滑 但当第二次执行动画时 它是正常且平滑的 我几乎尝试了所有方法 但无法解决我的问题 这是我的动画文件
  • Android 应用程序在后台运行时保存数据

    目前我正在开发 xmmp 客户端 当应用程序位于前台时 该客户端工作得很好 但由于事实上 当应用程序处于后台时 我在 Application 类中保存了大量数据 复杂的 ArrayList 字符串和布尔值作为公共静态 每个字段都被垃圾收集
  • 导航组件重复 NavArgs 的问题

    我有一个片段 class SomeFragment private val args by navArgs
  • 如何从 SQLite 获取记录总数

    我正在尝试从 Sqlite DB 获取行的总数 以下是我想要做的代码片段 我不知道我在这里做错了什么 public static int getTotalCount Context context Cursor c null try c g
  • Android:“dp”到“px”转换?

    我正在读这篇文章 http developer android com guide practices screens support html http developer android com guide practices scre
  • RxJava、Proguard 和 sun.misc.Unsafe

    我有以下问题RxJava 1 1 0 使用时Proguard 我没有更改 RxJava 版本或其 pro文件 但更新后OkHttp我无法编译使用Proguard因为我有关于sun misc Unsafe不在场 rxJava pro keep
  • 如何查找 Android 设备中的所有文件并将它们放入列表中?

    我正在寻求帮助来列出 Android 外部存储设备中的所有文件 我想查找所有文件夹 包括主文件夹的子文件夹 有办法吗 我已经做了一个基本的工作 但我仍然没有得到想要的结果 这不起作用 这是我的代码 File files array file
  • Android 原理图内容提供程序库配置?

    Jake Wharton 在最近的一次演讲中提到了这个库 它看起来是避免大量样板文件的好方法 所以我尝试了一下 但没有任何成功 https github com SimonVT schematic https github com Simo
  • Android构建apk:控制MANIFEST.MF

    Android 构建 APK 假设一个 apk 包含一个库 jar 例如 foo jar 该库具有 META INF MANIFEST MF 这对于它的运行很重要 但在APK中有一个包含签名数据的MANIFEST MF 并且lib jar
  • 调节麦克风录音音量

    我们正在尝试调整录音时的音量级别 麦克风似乎非常敏感 会接收到很多静电 我们查看了 setVolumeControlStream 但找不到传入其中来控制麦克风的流 将您的音频源设置为 MIC using MediaRecorder Audi
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • 如何将设备连接到Eclipse?

    我无法解决这个简单的问题 我正在尝试通过 USB 电缆将我的设备连接到 Eclipse 在我的 PC 上 我已经安装了 Eclipse 和 Android SDK 并且在模拟器上运行该程序运行良好 我已在我的电脑上下载并安装了 Samsun
  • 当手机旋转(方向改变)时如何最好地重新创建标记/折线

    背景 开发一个使用 Android Google Map v2 的本机 Android 应用程序 使用android support v4 app FragmentActivity 在 Android v2 2 上运行 客观的 在更改手机方
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少
  • 无法将 admob 与 firebase iOS/Android 项目链接

    我有两个帐户 A 和 B A 是在 Firebase 上托管 iOS Android unity 手机游戏的主帐户 B 用于将 admob 集成到 iOS Android 手机游戏中 我在尝试将 admob 分析链接到 Firebase 项
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • 在编译时进行字符串驻留以进行分析

    Context 我正在开发一个仪器分析器 它使您能够通过字符串命名不同的测量结果 例如 MEASURE SCOPE text rendering code MEASURE SCOPE password hashing MEASURE STA
  • 使用 jQuery 获取 单元格的“坐标”

    我正在构建一个不同的网站 下面是我的 HTML 标记和我的问题 请不要被这堵文字吓倒 我确信对于那些知道自己的东西的人来说这确实不是一个难题 但需要一些解释 div class cell table border 0 cellpadding
  • 当 HEALTHCHECK 失败时 Docker 容器会发生什么

    码头工人docs https docs docker com engine reference builder healthcheck说什么HEALTHCHECK说明是如何检查容器的健康状况 但我无法弄清楚健康检查失败时会发生什么 就像按照
  • MySQL复制用户

    我想在我的 MySQL 测试数据库上创建两个用户 一个对与生成报告等相关的表具有只读访问权限 另一个对同一表具有读写访问权限 这是为了测试通常与只读用户连接但切换到读写用户以执行某些任务的子系统 我已经创建了具有正确权限的读写用户 现在我需
  • 使用 RxJava 处理长时间运行的任务

    我正在尝试迁移AsyncTask向服务器发送消息 使用 RxJava 粗略地说 该任务执行以下操作 1 创建一条将要发送的消息 保存到数据库 2 向用户显示消息 状态 正在发送 3 向服务器发送消息 代码片段如下 4 将消息标记为已发送或失
  • 如何向表视图添加“加载更多”选项

    我的应用程序有一个由 Sqlite DB 填充的表 其中包含大量数据 所以它会导致表视图中的延迟加载 这是代码 void searchData i 0 newSearchBar setShowsCancelButton YES animat
  • IMDB 是否提供 API? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近发现了一个电影组织者应用程序 它从互联网电影数据库 http www imdb com Does
  • 无法调试 Go 代码:无法启动进程:在偏移量 0x0 处解码 dwarf 部分信息:太短

    我们正在尝试调试 Go 代码并收到此错误 could not launch process decoding dwarf section info at offset 0x0 too short 我们的设置 WITSC02X6385JGH
  • BluetoothGatt:协商新的 MTU 成功,但无法使用新的大小(相差 3 个字节)

    我正在开发一个使用 BLE 在设备之间交换数据的应用程序 为了获得更好的性能 在连接两个设备后 我正在协商增加 MTU 以便通过 BLE 交换更大的数据包 连接蓝牙设备并读取所有服务和特征后 我请求使用以下方法增加 MTU private
  • 我想为图像创建一个单独的域

    我想设置一个名为 img mydomain com 的域 这将是一个虚拟域 就像我的实际域一样 除了一个区别 它只提供以 jpg jpeg gif png 等结尾的文件 这样我就可以参考 img mydomain com some imag
  • 如何在wxFrame上设置图标?

    如何向 wxFrame 添加图标 ico 文件 我正在寻找docs http www wxpython org docs api wx Frame class html但找不到任何提及icon Thanks 凤凰wxpython frame
  • 如何访问Microsoft Speech SDK录制的音频流

    我正在使用 Microsoft 的 JavaScript 语音 SDK 转录麦克风流 录音和转录都是使用语音 SDK 完成的 我无法找到在录音完成后如何访问和保存录制的音频文件的方法 创建录音机并录音的代码 recognizer new S
  • jQuery 自定义事件到底是如何工作的

    我找不到任何关于 jquery 中的自定义事件实际实现方式的好资源 比如他们如何模拟事件冒泡等 这边走 bubbling is internal trigger function event data elem bubbling Event
  • 在 Ace 编辑器中检索字符串的行号

    我正在尝试检索 ace 编辑器中显示的文本中给定字符串的行号 示例 搜索 foo 返回 4 5 条件 ace编辑器内容中第4行和第5行包含 foo 字符串 遍历所有行并检查indexOf function findFooLineNumber
  • 使用推送通知时如何处理多个设备?

    我正在开发一个应用程序 我想在其中使用推送通知服务 我有一个服务器 现在我想知道 如何处理多个设备 每部 iPhone 都有唯一的设备 ID 名称吗 假设我想删除特定设备令牌的请求 那么如何处理多个用户呢 有没有办法通过应用程序为每个设备生
  • Angular 2 提前编译器:我必须将所有类属性公开吗?

    Angular 2 rc 6 typescript 2 node 4 5 0 npm 2 15 9 on Windows 7 我正在尝试从即时编译转向提前编译 并且我依赖这些资源 Angular 2 提前编译如何 https stackov
  • 从 OWIN 中的 OAuth Bearer Token 获取 IPrincipal

    我已使用 OWIN 成功将 OAuth 添加到我的 WebAPI 2 项目中 我收到令牌并可以在 HTTP 标头中使用它们来访问资源 现在 我想在其他通道上也使用这些令牌进行身份验证 这些通道不是 OWIN 模板所针对的标准 HTTP 请求
  • 在 Android 中使用 Jaunt 时类名冲突

    我正在尝试使用短动API http jaunt api com 根据建议使用 androidthis https stackoverflow com a 20002760 1291122所以回答 但当我运行项目时出现此错误 Could no
  • BinData() 中的十六进制而不是 base64 - MongoDB

    有没有办法将二进制值的十六进制而不是 base64 发送到 mongo 中的 BinData HexData 3 00112233445566778899aabbccddeeff or UUID 00112233445566778899aa
  • AccessibilityNodeInfo nodeInfo = event.getSource() 始终返回 null

    我正在尝试使用 AccessibilityNodeInfo 但当我使用 event getSource 时它总是返回 null 我尝试读取浏览器的编辑框 这是我的代码 public class MainActivity extends Ac