我正在尝试使用 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/