Редактировать: теперь я могу получить текстовые значения EditText.Это то, что мне нужно.
Я пытаюсь получить доступ к элементам веб-страницы с помощью службы специальных возможностей Android, но все, что я могу сделать, - это получить URL-адрес, а не какой-либо текст на странице.Действительно ли возможно получить текст от элементов пользовательского интерфейса на веб-странице?
Я попытался получить доступ к корневому узлу с помощью getRootInActiveWindow, а затем рекурсивно пройти по корневому дереву с помощью getChild () и распечатать любой текст, с которым я столкнулся.
Мой рекурсивный метод:
public void getChildrenInfo(AccessibilityNodeInfo info) {
try {
if (info == null) {
logOther("info is null");
return;
}
if (info.getText() != null && info.getText().length() > 0) {
String nodeText = info.getText().toString();
log("node has text:",nodeText);
}
if(info.getContentDescription() != null){
log("node content info:",info.getContentDescription().toString());
}
//logOther("nodeinfo child count is:", String.valueOf(info.getChildCount()));
for (int i = 0; i < info.getChildCount(); i++) {
AccessibilityNodeInfo child = info.getChild(i);
logOther("got child:", String.valueOf(i));
String className = "";
if(child.getClass() != null){
className = child.getClassName().toString();
//log("child", String.valueOf(i),"classType is:", className);
}
else{
//log("child", String.valueOf(i),"classType is null");
}
if(child != null){
if(child.getChildCount() > 0){
//logOther("Has children. Getting childrenInfo");
getChildrenInfo(child);
}
else if(child.getText() != null && child.getText().length() > 0){
String nodeText = child.getText().toString();
log("child has text:",nodeText);
}
child.recycle();
}
}
} catch(StackOverflowError ex){
ex.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}