android - 如何使用 AccessibilityInfo 在任何应用程序的任何 View 上阅读文本?

标签 android accessibility

我正在尝试使用 AccessibilityInfo 类读取任何应用程序的 ListView 中的每个项目。问题是我使用以下代码获取 ListView 中的项目总数:


 if(event.getClassName().equals("android.widget.ListView")) {
            String className= TextView.class.getName();
            AccessibilityNodeInfo nodeInfo= event.getSource();
            int i= nodeInfo.getChildCount(); }

但我没有获取 ListView 中项目的名称,例如让一个 ListView 中有 5 个 TextView ,然后我想从该 TextView 中获取文本。我试图通过使用进一步破坏 nodeInfo 对象:


 for(int j=0; j<nodeInfo.getChildCount() ;j++){
                AccessibilityNodeInfo subChild = nodeInfo.getChild(j);
                CharSequence subText = subChild.getText();

                Log.e("MyService: ","ListView child name: "+subText);
            }

所以我在获取 ListView 中 TextView 的值时做错了什么,

这不可能吗?

最佳答案

我自己找到了解决方案,解决方案是: event.getSource() 方法返回 AccessibilityNodeInfo 的实例,通过将该实例值转换为字符串格式,我们可以轻松获得结果。我们只需要断开字符串并得到所需的结果,在我的例子中我所做的是:

 String get_cord= String.valueOf(event.getSource());
    String[] first_split= get_cord.split("[;]");
                    for(int i=0; i<first_split.length; i++){
                        if(first_split[i].contains("text")){
                            String[] second_split= first_split[i].split(":");
                            user= second_split[1].trim();
                            System.out.println(user);
                            Log.e("MyService: ","username is: "+user);

                            break;
                        }
                    }`

关于android - 如何使用 AccessibilityInfo 在任何应用程序的任何 View 上阅读文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45634004/

相关文章:

安卓 Dagger 2 : Inject versus Provides

javascript - 通过 anchor 链接实现跳转到主要内容技术时更新键盘焦点

ios - 未触发动态类型通知

Web 可访问性和 h1-h6 标题 - 所有内容都必须在这些标签下吗?

html - 我应该在对话框中使用 <h1> 吗?

android - 在 android 的 evernote 应用程序中配置的 evernote 帐户的授权 token

java - Firebase 在本地存储 access_token

java - 断线 - Android

java - 不幸的是,GeoQuiz 已停止在 bignerdranch 工作

javascript - 将键盘选项卡焦点设置到页面顶部/使用 JavaScript/jQuery 重置键盘焦点